Replies: 3 comments 2 replies
-
Please provide an executable way of reproducing the problem. You can use whatever programming language you are comfortable with, including shell ( Based on the symptoms, it sounds like you are publishing messages with longer expiration first. |
Beta Was this translation helpful? Give feedback.
-
Messages are expired once they reach the head of the queue. Until they do, they will not be dead-lettered. This is documented in the TTL guide and has been the case for years. In other words, expired messages do not "jump to the head of the queue". This is intentional. Even though they are not marked for deletion and dead lettered before reaching the head of the queue, consumers are guaranteed to never have these messages delivered. Neither dead lettering nor expiration were designed to be used as a precise retry-after-a-period-of-time mechanism. |
Beta Was this translation helpful? Give feedback.
-
hey, @michaelklishin , @mkuratczyk , thanks for your information. `import amqp from "amqp-connection-manager";
*/ const queue_schedule = "queue_a"; exchange: "EX", async function main() { connection.on("connect", () => { // init channel //init schedule queue and set dlx to schedule_dlx await channel.waitForConnect(); function onScheduleMsg(msg) { /* async function test() { |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Describe the bug
with rabbitmq version 3.10.17,
when i set dead-letter-exchange and dead-letter-routing-key for queue A,
and I publish 3 messages to queue A with vary expirations of 3000, 10000, 60000,
so the first message was supposed to be delivered to dead-letter queue after 3 seconds,
and the second should be deliver to dead-letter queue after 10 seconds, and the 3rd should be 60s.
while result is, I can't get the dead-letters one by one,
but after 60s, those 3 messages were delivered to dead-letter-routed queue once at same time.
Reproduction steps
4.setup queue B, bind to exchange EX, route 'b';
...
Expected behavior
should get msg1, msg2, msg3 one by one at their specificed expiration time.
Additional context
No response
Beta Was this translation helpful? Give feedback.
All reactions