I was looking at the rabbitmq-delayed-message-exchange plugin as a potential way to solve an issue we haven't solved with RabbitMQ. We're looking to implement an exponential backoff when attempting to retry messages (
https://github.com/emque/emque-consuming/pull/55) and having trouble avoiding the issue of the head message blocking all subsequent messages. For example, if we have 3 messages in the queue with an x-delay of 1000, 2000 and 3000 where the head of the queue has the message with an x-delay of 3000. In all of the Dead Letter Exchange implementations (the suggested way to delay a retry, like this one
https://felipeelias.github.io/rabbitmq/2016/02/22/rabbitmq-exponential-backoff.html) that I've seen to date, there is an issue with the message blocking due to the TTL of the individual message preventing other messages in the queue from being processed, since the head message has to first expire before any further messages can be processed.
Does the rabbitmq_delayed_message_exchange plugin suffer from the same issue?
https://github.com/rabbitmq/rabbitmq-delayed-message-exchange#usage seems to imply this is not the case because the first message is published before the second message with more delay, but I'm also not entirely sure if this is also due to if the queue is a Last In First Out (LIFO) or First In First Out (FIFO) implementation. Could anyone confirm if this is the case?