У меня есть сервер 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? Я пропустил некоторые части конфигурации?