Replies: 5 comments 3 replies
-
I will convert this issue to a GitHub discussion. Currently GitHub will automatically close and lock the issue even though your question will be transferred and responded to elsewhere. This is to let you know that we do not intend to ignore this but this is how the current GitHub conversion mechanism makes it seem for the users :( |
Beta Was this translation helpful? Give feedback.
-
We need an executable way to reproduce. It is possible to bind a queue to an exchange multiple times. It is also possible for a dead-lettered message (you have both a DLX configured and a delivery limit on this queue) to be almost immediately routed back to the same queue, in which case it will |
Beta Was this translation helpful? Give feedback.
-
Moved to #3154 and hopefully answered there (both a workaround and a Shovel change to make this behavior at least significantly less likely). |
Beta Was this translation helpful? Give feedback.
-
Possible reasons for the issue @michaelklishin mentioned were: Sorry, but I'm not following the logic here. |
Beta Was this translation helpful? Give feedback.
-
It sounds like a legitimate bug. If there's no way to get a reproducible test case, another good information would be the state of the queue or the associated processes when that happens. I am not familiar with quorum queues though so I do not know what to ask for. @kjnilsson Thoughts? |
Beta Was this translation helpful? Give feedback.
-
I'm experiencing a message duplication as if it was possible to bind a queue twice to an exchange. I see a consumer ack rate twice as big as a publish rate while the redelivered rate is 0.
The image shows the problem symptoms before 8:22 (The green line is twice bigger than the yellow one - consumers get the same message twice at the same time).
Setup details:
RabbitMQ version: 3.8.14
One publisher -> Fanout exchange -> One quorum queue -> Four consumers.
Every consumer creates 10 channels with Prefetch Count = 5.
The problem occurs after consumer service restart (it is a docker swarm service with 4 instances). I noticed that the more consumers I have, the easier it to reproduce the issue. With 4 consumer instances, I can reproduce the issue 5 out of 10 times, while with 2 consumers I was able to reproduce it 2 out of 10 restarts. And with 1 consumer instance, I couldn't reproduce it after 10 restarts.
Some other oddities in RabbitMQ behavior I noticed during the issue:
The problem was solved after I renamed exchange+queue. Basically, I appended v2 to the previous names of exchange and queue.
With a new set of exchange+queue I tried restarting my consumers 10 times and didn't see the issue. My "bad" pair of queue&exchange are still on the server and after I re-pointed my producer and consumer to the original queue, I was able to reproduce the issue 3 out of 5 restarts. So I believe this is something specific to a particular instance of a queue or exchange. Also, I believe this happened after we had an incident in our prod environment. One host server in the swarm cluster ran out of available memory. DevOps team just killed the app with a memory leak and RabbitMQ restored itself. At the same moment we started to see stuck unacked messages for the first time.
Also, DevOps team confirmed that the metadata of our Old and New exchange and Old and New queue in DETS file are identical.
Some additional details about Rabbit setup:
CONFIG:
loopback_users.admin = false
cluster_formation.peer_discovery_backend = classic_config
cluster_formation.node_cleanup.only_log_warning = true
cluster_formation.classic_config.nodes.1 = rabbit@rabbitmq-1
cluster_formation.classic_config.nodes.2 = rabbit@rabbitmq-2
cluster_formation.classic_config.nodes.3 = rabbit@rabbitmq-3
cluster_formation.classic_config.nodes.4 = rabbit@rabbitmq-4
cluster_partition_handling = autoheal
#Flow Control is triggered if memory usage above %80.
vm_memory_high_watermark.relative = 0.8
#Flow Control is triggered if free disk size below 5GB.
disk_free_limit.absolute = 5GB
prometheus.return_per_object_metrics = true
Plugins
[rabbitmq_prometheus,
rabbitmq_management,
rabbitmq_federation,
rabbitmq_federation_management,
rabbitmq_shovel,
rabbitmq_shovel_management].
Leader
rabbit@rabbitmq-1
Online
rabbit@rabbitmq-2
rabbit@rabbitmq-1
rabbit@rabbitmq-3
Members
rabbit@rabbitmq-2
rabbit@rabbitmq-1
rabbit@rabbitmq-3
Will be happy to provide any further details.
Thanks,
Alex
Beta Was this translation helpful? Give feedback.
All reactions