Skip to content

Delay queues always type "classic" #633

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

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