Size: a a a

2020 September 22

A

Alexander in pro.jvm
Кирилл Веревкин
Да, листеннер повесил (но чет даже с ошибочным вводом ip-адреса кафка брокера он не отрабатывает, но это скорее всего мои косяки я перепроверю).
Проблема была в другом. Я тестил недоступность кафка брокера путем указания кривого dns имени (которого в сети нет). При таком варианте приложение не стартует в целом с ConfigException, что не может найти указанный DNS. Но если DNS есть, но брокера kafka на этом адресе нет, то в целом приложение остается запущенным и в лог начинает писать сообщения о том , что не удалось установить соединение с кафка брокером.
На текущий момент меня такое в целом устраивает, но  наверное хотелось бы защитится еще и от указания неверного DNS имени в параметрах кафка брокера и отлавливать это Exception.
Хм, если только в java-конфиге создавать KafkaMessageListenerContainer или что там, где и ловить исключение. Но, поскольку нужно вернуть бин, то придется возвращать null в случае выброса исключения, и делать null-чек там, где этот бин инжектится. Другого решения я так сходу не вижу...
источник

Lr

Larymar r.sorokin in pro.jvm
Добрый день
возникла проблема
по xsd нужно сгерерить класс для серриализации, но xsd на русском
есть ли какой-то сервис или утилита
что может сгенерить нормальный класс (с англ полями)  и русскими аннотациями, что бы код не превращался в языковое месево
источник

AE

Alexandr Emelyanov in pro.jvm
Larymar r.sorokin
Добрый день
возникла проблема
по xsd нужно сгерерить класс для серриализации, но xsd на русском
есть ли какой-то сервис или утилита
что может сгенерить нормальный класс (с англ полями)  и русскими аннотациями, что бы код не превращался в языковое месево
нет. только биндинги для xjc накатать
источник

В

Влад in pro.jvm
Ребят у меня вопрос к Вам. Если нет диплома о Высшем образовании, но есть знания инглиша хорошее и знание языка и фреймворков. Это не помешает сильно? Вопрос тупой, но лучше тут спрошу.
источник

かたかわ in pro.jvm
Влад
Ребят у меня вопрос к Вам. Если нет диплома о Высшем образовании, но есть знания инглиша хорошее и знание языка и фреймворков. Это не помешает сильно? Вопрос тупой, но лучше тут спрошу.
Помешает в харкдорных технических конторах, то есть в 95% всем без разницы
источник

В

Влад in pro.jvm
かたかわ
Помешает в харкдорных технических конторах, то есть в 95% всем без разницы
Понял...
Я просто смотрю вакансии Globallogic, там вообще не написано про образование. Только знание того и сего.
источник

ch

central hardware in pro.jvm
Влад
Понял...
Я просто смотрю вакансии Globallogic, там вообще не написано про образование. Только знание того и сего.
если заграницу перезжать  может помешать, а так нет проблем
источник

かたかわ in pro.jvm
Влад
Понял...
Я просто смотрю вакансии Globallogic, там вообще не написано про образование. Только знание того и сего.
Ещё от страны зависит, конечно, но это уже другая тема
источник

В

Влад in pro.jvm
かたかわ
Ещё от страны зависит, конечно, но это уже другая тема
Ну я планирую начинать у себя в Украине в Киеве. Но все равно крупные компании все на аутсорсе же...
источник

КВ

Кирилл Веревкин... in pro.jvm
Вениамин Белоусов
Можно передавать объект по цепочке. Интерфейс с методом и сигнатурой ваших объектов.
Извините за долгий ответ.
А можете пример привести?

Я на всякий случай попробую конкретизировать на примере, что хочется получить:
Описание:
Приходит сообщение в котором есть информация о товаре (сущность Product) и его модели (сущность ProductModel). При этом связь между сущностями один ко многим (у товара может быть только одна модель). По результатам обработки сообщения мы должны создать сущности Product и ProductModel и записать их в базу (при этом в сущности Product должна быть ссылка на ProductModel). То есть создание запись в БД Product зависит от создания ProductModel. В этом примере две сущности, на деле их больше и зависимостей больше.

Цель:
Хочется написать обработчик в котором я могу сделать условно следующий код (т.е. максимально упростить дальнейшее расширение функционала):
@Autowired
private List<Handlers> handlers;

public void process(Message message){
   handlers.forEach(h -> h.handle(message));
}

Надо понимать, что я не пытаюсь привести код к такому - это просто пример. Я хочу максимально разделить ответственность по созданию сущностей по разным handler, чтобы упростить тестирование. Т.е. уйти от написания в одном методе кода вида:
Product product = new Product();
ProductModel productModel = new ProductModel;
product.model = productModel;
...
...
...

В чем проблема:
Мне в процессе выполнения handler в сущности нужно добавлять ссылки на другие сущности. Т.е. при создании Product нужно указать ссылку на ProductModel. Получается, что нужен либо формировать каким-то образом порядок выполнения handler (в голове есть DependsOn, но это повысит связность как по мне), либо придумывать какую-то пост обработку создания сущностей, но это тоже будет завязано на конкретный кейс получается.
Возможно я загоняюсь по пусту, но не могу придумать как сделать менее связанно и легко расширяемо :)
источник

РН

Роман Нагаев... in pro.jvm
Кирилл Веревкин
Добрый вечер.
А кто может подсказать момент, как лучше организовать классы/код на уровне паттерна или подхода к проектированию.
Суть вопроса:
Приходит некое сообщение из внешней системы и происходит его десериализация в экземпляр класса java.  далее нужно по определенным условиям (в зависимости заполнены ли поля этого объекта или нет) записать в БД информацию. При этом может быть ситуация при которой для записи одной сущности в БД необходима ссылка на другую сущность, которая уже записана ранее. Типа надо прогнать полученный объект по обработчикам, создать записи в БД и при этом проставить при необходимости внешние ключи на другие сущности.
Сначала думал над тем, чтобы применить Chain of Responsibility, но что-то начал сомневаться насчет передаче зависимостей других сущностей.

Возможно это не решить напрямую паттерном, но есть советы по организации классов для реализации задачи. Буду рад послушать варианты того, как бы вы это сделали исходя из опыта :)

Просто городить все в один класс не хочется, а хочется как-то разделить ответственность за создание записей в БД, чтобы в дальнейшем сопровождение кода упростить (при появлении потребности в создании новых объектов)
то что ты хочешь сделать похоже на ETL и обычно для этого используют EIP
https://www.enterpriseintegrationpatterns.com/patterns/messaging/
источник

ВБ

Вениамин Белоусов... in pro.jvm
Роман Нагаев
то что ты хочешь сделать похоже на ETL и обычно для этого используют EIP
https://www.enterpriseintegrationpatterns.com/patterns/messaging/
А если просто в сервисе с транзакцией создать родителя, а потом в другом сервисе передавать ссылку с родителем и на каждую модель  создавать модель с родителем? Я что-то упускаю из идеи автора. Почему при создании продукт нужна продукт модель. Один ко многим же. То есть один продукт- много моделей?
источник

РН

Роман Нагаев... in pro.jvm
Вениамин Белоусов
А если просто в сервисе с транзакцией создать родителя, а потом в другом сервисе передавать ссылку с родителем и на каждую модель  создавать модель с родителем? Я что-то упускаю из идеи автора. Почему при создании продукт нужна продукт модель. Один ко многим же. То есть один продукт- много моделей?
это протекают заморочки связанные с реляционной структурой ему нужно пульнуть в базу "агрегат" причём сохранение состоит из нескольких операций и делать их нужно именно в нужном порядке, потому что не в любом порядке получится корректно сохранить

конкретно в этом случае, да, owning side находится в  потомке и можно сначала сохранить родителя а потом добавить референс на него во всех потомков, и сохранить их но он хочет отразить зависимость одного шага на другой
источник

КВ

Кирилл Веревкин... in pro.jvm
Вениамин Белоусов
А если просто в сервисе с транзакцией создать родителя, а потом в другом сервисе передавать ссылку с родителем и на каждую модель  создавать модель с родителем? Я что-то упускаю из идеи автора. Почему при создании продукт нужна продукт модель. Один ко многим же. То есть один продукт- много моделей?
Автор видимо сам себе злобный буратино и подустал под конец дня. По идее должно быть, что у одной модели много продуктов, а у одного продукта одна модель. Соответственно у сущности Продукт есть внешний ключ на сущность модель. Надеюсь хоть в этом сообщении не накосячил таки
источник

ВБ

Вениамин Белоусов... in pro.jvm
Кирилл Веревкин
Автор видимо сам себе злобный буратино и подустал под конец дня. По идее должно быть, что у одной модели много продуктов, а у одного продукта одна модель. Соответственно у сущности Продукт есть внешний ключ на сущность модель. Надеюсь хоть в этом сообщении не накосячил таки
То есть вы можете сначала сохранить модель. А потом в цикле все продукты... Что вы ещё хотите сделать? Я просто не понимаю идею :)
источник

ВБ

Вениамин Белоусов... in pro.jvm
Роман Нагаев
это протекают заморочки связанные с реляционной структурой ему нужно пульнуть в базу "агрегат" причём сохранение состоит из нескольких операций и делать их нужно именно в нужном порядке, потому что не в любом порядке получится корректно сохранить

конкретно в этом случае, да, owning side находится в  потомке и можно сначала сохранить родителя а потом добавить референс на него во всех потомков, и сохранить их но он хочет отразить зависимость одного шага на другой
Аааа, в итоге цель сохранить просто модель и чтобы продукты по мнимой связи отработали?
источник

КВ

Кирилл Веревкин... in pro.jvm
Вениамин Белоусов
То есть вы можете сначала сохранить модель. А потом в цикле все продукты... Что вы ещё хотите сделать? Я просто не понимаю идею :)
вот здесь правильно в целом мое желание.
Если разбирать на примере опять же:
Есть отдельный handler который создает продукт (ответственность - создать продукт) и есть отдельный handler, который создает модель (ответственность - создать модель). В моем понимании это отдельные классы т.к. у класса должна быть единственная ответственность.

У меня вопрос скорее в группировке этого добра или организации кода. Типа как мне с учетом внедрения зависимостей (т. е. я внедряю все Handler) сгруппировать создание сначала модели, а затем уже продукта? Написать какой-то отдельный сервис и внедрять его, а он уже свяжет между собой эти два handler, создаст сущности в нужном порядке и прокинет необходимые зависимости (типа создаст сначала модель, а затем передаст продукту)?

Но учитывая, что задача в целом выглядит просто - я видимо просто как-то неправильно в голове собираю у себя эту задачу ("кубики" неправильно расставляю). Видимо надо просто посидеть с листочком и порисовать связи. Если так и не стало понятней, то видимо это все таки действительно я злобный буратино и пойду нормально формулировать задачу для себя)
источник

ВБ

Вениамин Белоусов... in pro.jvm
Кирилл Веревкин
вот здесь правильно в целом мое желание.
Если разбирать на примере опять же:
Есть отдельный handler который создает продукт (ответственность - создать продукт) и есть отдельный handler, который создает модель (ответственность - создать модель). В моем понимании это отдельные классы т.к. у класса должна быть единственная ответственность.

У меня вопрос скорее в группировке этого добра или организации кода. Типа как мне с учетом внедрения зависимостей (т. е. я внедряю все Handler) сгруппировать создание сначала модели, а затем уже продукта? Написать какой-то отдельный сервис и внедрять его, а он уже свяжет между собой эти два handler, создаст сущности в нужном порядке и прокинет необходимые зависимости (типа создаст сначала модель, а затем передаст продукту)?

Но учитывая, что задача в целом выглядит просто - я видимо просто как-то неправильно в голове собираю у себя эту задачу ("кубики" неправильно расставляю). Видимо надо просто посидеть с листочком и порисовать связи. Если так и не стало понятней, то видимо это все таки действительно я злобный буратино и пойду нормально формулировать задачу для себя)
У вас объекты в message?
источник

КВ

Кирилл Веревкин... in pro.jvm
Вениамин Белоусов
У вас объекты в message?
Да, одно сообщение. А его нужно распарсить и раскидать по базе данных по некоторым условиям
источник

ВБ

Вениамин Белоусов... in pro.jvm
Может просто в Ordered.LOWEST_PRECEDENCE обрабатывать родителя, а потом далее по листу все зависимые сущности?
источник