Незакрытые сообщения RabbitMQ не удаляются из очереди после истечения срока - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть сервер RabbitMQ (v.3.8.2) с простой привязкой разветвленной очереди обмена, с несколькими производителями и одним потребителем. Средняя скорость доставки / подтверждения достаточно низкая, около 6 мс / с.

Очередь создается во время выполнения производителями с параметром x-message-ttl, установленным на 900000 (15 минут).

В очень специфических c условиях (например, ситуация с редкой ошибкой) сообщения отклоняются потребителем . Эти сообщения затем показываются в счетчике unacked на веб-странице администратора RabbitMQ на неопределенный срок. Они никогда не истекают или не получают отклоненное событие после истечения времени ожидания.

В параметрах ttl нет конкретных c переопределений для каждого сообщения.

Мне не нужна обработка мертвых букв, так как эти конкретные сообщения не требуют обработки с высокой надежностью, и я могу позволить себе время от времени терять некоторые из них при указанных c условиях ошибки.

Параметры обмена:

name: poll
type: fanout
features: durable=true
bound queue: poll
routing key: poll

Параметры очереди:

name: poll
features: x-message-ttl=900000 durable=true

Например, это то, что я сейчас вижу на странице администратора очереди сервера RabbitMQ:

Как вы можно видеть, что в очереди 12 отклоненных / непрочитанных сообщений, и они живут там уже больше недели.

Как я могу получить истечение срока хранения для прикрепленных сообщений согласно параметру ttl? Я пропустил некоторые части конфигурации?

1 Ответ

0 голосов
/ 14 февраля 2020

Это состояние возникает, когда получатель не подтверждает или отклоняет оба сообщения после получения сообщения.
В нераспакованном состоянии срок действия сообщения не истекает.
После получения сообщения его необходимо подтвердить или отклонить.

Эта проблема не является проблемой, срок которой не истекает, проблема в том, что вы не подтверждаете или не отклоняете сообщение.

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