Skip to content

Conversation

bertoost
Copy link

@bertoost bertoost commented Jul 14, 2025

Since quorum queues for example, do not update the TTL and will be removed when the ttl since the first message reaches and you will lose later messages with the same delay.

For example;
A message with a 2 second delay, creates a queue with TTL of 4 seconds. FIne!
A second message with the same delay does not update the TTL of the queue (when quorum type)
Even more messages dispatched.. Will not update the TTL.
After 4 seconds, since the initial message, the queue is deleted automatically and you will lose messages which has not been re-routed the de "normal" queue.

Reproduce;

  • Create a "default" quorum queue to dispatch messages on
  • Dispatch 20 messages in a loop with a 2 sec delay
  • Add a sleep to the loop to simulate different dispatch times
  • Watch the delay queue in rabbitmq and see not all messages ending up in the default queue
for($i = 0; $i < 20; $i++) {
    TestJob::dispatch()->delay(2);
    sleep(rand(1, 5));
}

After this fix, the queue exists all the time, or gets deleted and recreated successfully and you will not lose any messages.

Also see the docs feature comparison
https://www.rabbitmq.com/docs/quorum-queues#feature-matrix

Since quorum queues for example, do not update the TTL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant