Задать вопрос
vitya_brodov
@vitya_brodov
Java dev

Как спроектировать отправку данных по консюмерам?

Суть:
Есть API, Который принимает на вход ID платежа. Далее кроном ходит бд и вытягивает по ID детали платежа
(сумма, реквизит и т.п) и присваивается статус: NEW.
Дале обогащенные данные отправляется http запросом по адресатам и меняется статус с NEW на
SENT.

Проблема: если один из адресатов не получит данные, то статус не меняется.

Вопрос: Как спроектировать по уму, чтобы если один из адресатов не получил данные, то сделать повторную отправку при этом не затрагивая других?
  • Вопрос задан
  • 50 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Есть API, Который принимает на вход ID платежа. Далее кроном ходит бд и вытягивает по ID детали платежа
(сумма, реквизит и т.п) и присваивается статус: NEW.

Попробуйте фреймворк spring quartz. Или spring batch. С их помощью можно реализовать то, что вы хотите
Ответ написан
Комментировать
@Wan-Derer
Зобанели на Хабре, волки́ ;((
Сделать статус PARTIALLY_SENT и поле с получателями. Можно попробовать писать в базу прямо List или Set, через .toString() преобразовывать в строку вида {"user1", "user2", ... }. Поле каждого получения обновляешь поле, удаляя получателя. Как поле становится пустым - значит всем отправлено... и даже статус не нужен :)
Можно писать Map (получатель, число_попыток). Map тоже хорошо преобразуется методом .toString(), правда в обратную сторону придётся написать парсер, впрочем, он будет очень простой.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы