Как повторить попытку отправки сообщения в AWS SQS в Spring Boot, а затем отправить его в DLQ, если все повторные попыткJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как повторить попытку отправки сообщения в AWS SQS в Spring Boot, а затем отправить его в DLQ, если все повторные попытк

Сообщение Anonymous »

Я работаю над приложением Spring Boot 3.5.0, которое публикует сообщения в очередь AWS SQS FIFO.
Мои требования:
  • При отправке сообщения в SQS:
    • В случае сбоя (ошибка сети, ошибка AWS и т. д.) приложение должно повторить попытку X раз с помощью Задержка Y секунд.
    • Если все повторные попытки завершаются неудачей, сообщение должно быть автоматически отправлено в другую очередь SQS, которая действует как DLQ.
  • (Фаза 2) – Когда DLQ накапливает 10 сообщений, я хочу отправить уведомление по электронной почте о сообщениях, которые в данный момент находятся в DLQ.

    Но это вторично; меня больше всего беспокоит логика повтора + DLQ в Spring Boot.
Что я пробовал до сих пор
Я использую Spring Retry и имею что-то вроде:

Код: Выделить всё

@Retryable(
value = Exception.class,
maxAttempts = 4,
backoff = @Backoff(delay = 1000, multiplier = 2)
)
public void sendEventToOrderInformationQueue(OrderInformationDto dto, String groupId) {
sqsTemplate.send(...);  // simplified
}

@Recover
public void recover(Exception ex, OrderInformationDto dto, String groupId) {
// send to DLQ
}
Это работает, когда я тестирую локально, но я хочу подтвердить:
  • Это рекомендуемый/идиоматический способ реализовать повтор + пересылку DLQ в Spring Boot?
  • Должна ли логика повтора находиться внутри клиентского компонента SQS или она должна быть на отдельном уровне обслуживания?
  • Является ли @Retryable правильным подходом для рабочих нагрузок или мне следует вместо этого использовать механизмы повторных попыток RetryTemplate / AWS SDK?
Для этапа 2 (электронная почта, когда DLQ имеет 10 сообщений) я думаю о запланированном задании, которое опрашивает количество DLQ и запускает оповещение — правильное ли это направление?

Как лучше всего реализовать:
  • Повторить отправку сообщений SQS
  • Переслать настраиваемый DLQ после неудачных попыток
  • Будущее расширение для уведомлений DLQ
Спасибо за любые вопросы руководство!

Подробнее здесь: https://stackoverflow.com/questions/798 ... nd-it-to-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»