Community Support Policy
RabbitMQ version used4.2.4 Erlang version used28.3.x Operating system (distribution) usedrhel How is RabbitMQ deployed?Other rabbitmq-diagnostics status outputSee https://www.rabbitmq.com/docs/cli to learn how to use rabbitmq-diagnostics DetailsLogs from node 1 (with sensitive values edited out)See https://www.rabbitmq.com/docs/logging to learn how to collect logs DetailsLogs from node 2 (if applicable, with sensitive values edited out)See https://www.rabbitmq.com/docs/logging to learn how to collect logs DetailsLogs from node 3 (if applicable, with sensitive values edited out)See https://www.rabbitmq.com/docs/logging to learn how to collect logs Detailsrabbitmq.confSee https://www.rabbitmq.com/docs/configure#config-location to learn how to find rabbitmq.conf file location DetailsSteps to deploy RabbitMQ clustern/a Steps to reproduce the behavior in questionCreate two policies for quorum queues. Both should specify Create two queues and apply one policy to each. Publish a message to each, then get the message from the UI with the option nack, requeue=false. The qq with the dlx configured will have the message stuck in dead-lettered. The qq with only the advanced.configSee https://www.rabbitmq.com/docs/configure#config-location to learn how to find advanced.config file location DetailsApplication codeDetails# PASTE CODE HERE, BETWEEN BACKTICKSKubernetes deployment fileDetails# Relevant parts of K8S deployment that demonstrate how RabbitMQ is deployed
# PASTE YAML HERE, BETWEEN BACKTICKSWhat problem are you trying to solve?I'm trying to understand the intended behavior of a message in a quorum queue that has a policy that only defines the We thought that to solve this we should remove both Could you clarify what the intended behavior is? As I read https://www.rabbitmq.com/blog/2022/03/29/at-least-once-dead-lettering , it sounds like I should expect an accumulation of messages, but in practice it sounds like that option is silently ignored. |
Replies: 2 comments 1 reply
|
For a quorum queue, the DLX destination still comes from The practical policy should include both pieces if you want quorum queue at-least-once dead lettering: rabbitmqctl set_policy qq-dlx '^qq\.' \
'{"dead-letter-exchange":"my-dlx","dead-letter-strategy":"at-least-once"}' \
--apply-to quorum_queuesIf this came up because of |
|
If you do not configure the exchange to dead letter to, no dead lettering will take place. |
dead-letter-strategyby itself does not create a dead-letter target. It only changes how quorum queues perform dead-lettering once a DLX is actually configured.For a quorum queue, the DLX destination still comes from
dead-letter-exchangeand optionally a routing key. Withoutdead-letter-exchange, there is nowhere for the message to be republished, so you should not expect theat-least-oncedead-letter worker behavior just becausedead-letter-strategyis set.The practical policy should include both pieces if you want quorum queue at-least-once dead lettering: