Как удалить сообщение из очереди в RabbitMQ - PullRequest
0 голосов
/ 15 марта 2020

Я использую Rabbit MQ для воспроизведения того, что делает Jenkins. Единственная проблема, с которой я сталкиваюсь, скажем, когда в очереди 10 сообщений. И есть несколько повторяющихся сообщений, которые находятся в состоянии unacknowledged. И мне нужно удалить эти сообщения из очереди, как мне этого добиться?

Моя конфигурация rabbitmq следующая: каждая очередь имеет только одного потребителя. Таким образом, если у меня будет 10 сообщений, все они будут обработаны через поток одного и того же потребителя.

Ответы [ 2 ]

1 голос
/ 15 марта 2020
  1. Вы можете использовать любой плагин (например, this ) для дедупликации сообщений на стороне кролика.
  2. Используйте кеш на вашем потребителе для определения того, обрабатывалось ли недавно то же сообщение.
0 голосов
/ 15 марта 2020

Как уже предлагал @ekiryuhin, один из подходов, которые вы могли бы использовать, - присвоить тегу request_id его полезную нагрузку перед созданием сообщения для RabbitMQ и в конечном кэше вашего потребителя request_id. Ищите request_id, если он уже есть, игнорируйте полезную нагрузку и удалите его. Этот request_id может работать как идентификатор дедупликации для ваших полезных нагрузок.

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