Весенний облачный поток с RabbitMQ - PullRequest
0 голосов
/ 10 октября 2018

В настоящее время в своем проекте я использую весенний облачный поток с rabbitmq.Все хорошо, но проблема в том, что в StreamListener я устанавливаю условие для типа сообщения.Если RabbitMQ не соответствует типу (не удается найти @StreamListener, соответствующий для сообщения с идентификатором: ZZZZZZ), то это сообщение исчезло из очереди.Я не хочу удалять это сообщение, если сообщение имеет неверный тип.Есть какое-то решение для этой проблемы?

1 Ответ

0 голосов
/ 10 октября 2018

Есть два способа сделать это:

  • Бросить исключение, если сообщение имеет неверный тип.В этом случае сообщение не будет удалено из очереди, поскольку оно не было успешно обработано и ACK не был получен.
  • Вставьте сообщение в очередь самостоятельно, как только вы обнаружите, что тип является плохим.

Оба подхода могут страдать от так называемого бесконечного цикла.Сообщение обрабатывается, оно имеет неправильный тип, оно вставляется повторно, и это повторяется.Чтобы избежать этого, вы можете добавить некоторую политику повторной вставки, например: экспоненциальную задержку или ограниченное количество повторных вставок и т. Д.

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

...