Quarkus / Smallrye Reactive Messaging - повторная доставка сообщений - PullRequest
0 голосов
/ 20 февраля 2020

В настоящее время я изучаю интеграцию Smallrye Reactive Messaging в Quarkus. На первый взгляд, отправка и получение сообщений действительно просты и элегантны.

Но одна вещь, которую я не обнаружил: Как обработать повторную доставку сообщений?

Пример: Мы получаем сообщение и пытаемся его обработать. Возникает какое-то исключение (может быть, БД недоступна или исключение блокировки оптимистического c или что-то). В таком случае я бы выдал исключение, чтобы сообщение не было подтверждено. Но в настоящее время я не вижу способа доставки сообщения.

Я настроил небольшой фиктивный проект для проверки этого:

  • Quarkus
  • ActiveMQ Artemis
  • отправить сообщение (через консоль Artemis) в очередь - очередь настроена с макс. повторной доставкой = 3
  • получить сообщение с Quarkus / Smallrye Reactive Messaging @ Входящая аннотация
  • сгенерировать исключение в методе @Incoming -> Сообщение удалено из очереди Артемиды -> Метод @Incoming вызывается только один раз

Если я закрою приложение Quarkus, сообщение снова можно будет увидеть в очереди Artemis с установленным значением true для флага доставки.

Но я не могу найти способ управления / настройки повторная доставка в Smallrye Reactive Messaging, так что этот уровень обрабатывает повторную доставку сообщения n раз и помещает сообщение в DLQ после максимальных попыток.

Есть ли способ сделать это?

...