Как приостановить @RabbitListener, не уничтожая AnonymousQueue - PullRequest
0 голосов
/ 31 октября 2019

У меня есть приложение Spring Boot, которое обычно управляется сообщениями, но в особых случаях входящие сообщения должны быть остановлены. Однако я не могу потерять эти сообщения, мне нужно их буферизовать и позже получать в правильном порядке.

Существует множество вопросов и ответов об остановке прослушивателя с помощью ListernerEndpointRegistry, например here .

Однако, когда я останавливаю контейнер, AnonymousQueue исчезает. Я хочу, чтобы очередь оставалась на бирже, буферизировала любые сообщения и получала их при перезапуске. Возможно ли это или мне нужно буферизовать их внутри моего приложения?

1 Ответ

1 голос
/ 31 октября 2019

Есть два варианта.

  1. Не использовать анонимную (автоудаление) очередь и использовать остановки / запуск.
  2. Не останавливать контейнер;просто заблокируйте поток (и) слушателя, когда вы хотите приостановить доставку сообщений, и разбудите их, когда вы хотите перезапустить.

Однако я не могу потерять эти сообщения

Если вы не можете потерять сообщения, вы НИКОГДА не должны использовать очередь автоматического удаления - вы можете потерять сообщения в любое время, если у вас простой сетевой сбой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...