Гость
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов сервиса один раз или же много? / 8 сообщений из 8, страница 1 из 1
28.07.2019, 20:14
    #39842343
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов сервиса один раз или же много?
Есть мой сервер (Spring Boot 2) и стороннее API. Мой сервер подключается к этому API через ActiveMQ (они предоставили свою библиотеку, через которую они все делают). Каждую секунду API шлет сообщения ко мне на сервер. Есть некий Handler, который это все ловит и даёт мне определенный события в определенных методах. Есть мой сервис (с транзакциями) который вызывается для обработки события в Handler. В каждом методе Handler-а я получаю List<Event>. И вот у меня дилемма. Передавать сервису весь лист и при этом если там возникает Exception(даже если это первый элемент), то все остальные элементы остаются не обработанными и происходит rollback. Или же передавать по одному элементу в сервис и тогда я смогу контролировать возникновение ошибки и в случае чего добавлять в некий кэш. Но что меня настораживает во втором варианте так это то что если придет лист из 500 элементов, то будет 500 раз открытие сессии для бд и закрытие. Что посоветуете?
...
Рейтинг: 0 / 0
28.07.2019, 20:56
    #39842350
ivanra
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов сервиса один раз или же много?
Учебники рекомендуют при прочих равных использовать coarse-grained web service. Хотя, случаи бывают разные. Ну и наверно когда не можешь определиться, следует начать с coarse-grained granularity, плюс не помешает разумная обработка исключений
...
Рейтинг: 0 / 0
29.07.2019, 01:31
    #39842380
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов сервиса один раз или же много?
TsyklopЕсть мой сервер (Spring Boot 2) и стороннее API. Мой сервер подключается к этому API через ActiveMQ (они предоставили свою библиотеку, через которую они все делают). Каждую секунду API шлет сообщения ко мне на сервер. Есть некий Handler, который это все ловит и даёт мне определенный события в определенных методах. Есть мой сервис (с транзакциями) который вызывается для обработки события в Handler. В каждом методе Handler-а я получаю List<Event>. И вот у меня дилемма. Передавать сервису весь лист и при этом если там возникает Exception(даже если это первый элемент), то все остальные элементы остаются не обработанными и происходит rollback. Или же передавать по одному элементу в сервис и тогда я смогу контролировать возникновение ошибки и в случае чего добавлять в некий кэш. Но что меня настораживает во втором варианте так это то что если придет лист из 500 элементов, то будет 500 раз открытие сессии для бд и закрытие. Что посоветуете?

А что мешает каждый евент гнать отдельно в месседж брокере.

Если хотите слать листом, то надо еще промежуточный сервис который распаковывает лист и посылает его в другую очередь где консьюмеры его подхватывают и долбят по одиночке евенты.

Что касает пула для бд и пула для пулэкзекьютора для выполнения пачки событий в консьюмере, то почитайте отдельно: database pool connection, message broker publisher/subscriber, pool executor Java.
...
Рейтинг: 0 / 0
29.07.2019, 08:37
    #39842404
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов сервиса один раз или же много?
Tsyklop,
Вы спрашиваете вопрос чисто бизнес логики. На который тут не ответят:
- слать в базу пачкой в одной транзакции или в базу 500 коммитов и пачки нету?
...
Рейтинг: 0 / 0
29.07.2019, 09:06
    #39842408
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов сервиса один раз или же много?
TsyklopВ каждом методе Handler-а я получаю List<Event>. И вот у меня дилемма. Передавать сервису весь лист и при этом если там возникает Exception(даже если это первый элемент), то все остальные элементы остаются не обработанными и происходит rollback. Так происходит только если бездумно вставлять везде @Transactional и/или декорировать checked exceptions.
...
Рейтинг: 0 / 0
29.07.2019, 09:27
    #39842414
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов сервиса один раз или же много?
Sergunka
А что мешает каждый евент гнать отдельно в месседж брокере.

Если хотите слать листом, то надо еще промежуточный сервис который распаковывает лист и посылает его в другую очередь где консьюмеры его подхватывают и долбят по одиночке евенты.

Что касает пула для бд и пула для пулэкзекьютора для выполнения пачки событий в консьюмере, то почитайте отдельно: database pool connection, message broker publisher/subscriber, pool executor Java.

Я получаю данные сразу в Handler-е. Внутрь ActiveMQ я не лезу ибо дали либу которая все нужное делает за меня.
...
Рейтинг: 0 / 0
29.07.2019, 09:30
    #39842415
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов сервиса один раз или же много?
Андрей ПанфиловТак происходит только если бездумно вставлять везде @Transactional и/или декорировать checked exceptions.
Что значит декодировать? в этом случае
...
Рейтинг: 0 / 0
29.07.2019, 10:53
    #39842440
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов сервиса один раз или же много?
Tsyklopвозникает Exceptionкод где?
Ест веб сервис на порту. Есть сервисный слой или БЛ. Есть ИС и ее границы куда чужая не входит...
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Вызов сервиса один раз или же много? / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]