Thanks for your replies. I understand what's going on, but I don't see how TTL works with priority queues Let me give an example. If we have a queue with max priority 2 that dead letters into another queue. When I enqueue a message with priority 1, with a 3 minute TTL, followed by several message with priority 2 with a TTL of 10 seconds, nothing dead letters into the expected queue until after 3 minutes; however, if I ask for the next message (before the 3 minutes), I get the high priority/low TTL message and all messages dead letter as expected.
Following your explanation, do all "bins" get a TTL timer on their respective head, or does only one message in the whole queue, get a timer? Is it possible to reprioritize that timer after messages have been enqueued?
Assuming this is expected behavior, what is the recommended implementation of backing off message retries?