[rabbitmq-discuss] Vanishing of persistent messages on durable, auto-deleting queue with dead-lettering
Matthias Radestock
matthias at rabbitmq.com
Sun Jul 1 19:23:14 BST 2012
Ernest,
On 29/06/12 17:27, Ernest Staszuk wrote:
> After disconnecting a client from durable, auto-deleting queue with
> dead-lettering-exchange I would expect passing all messages to dead
> letter exchange and then deleting queue. But surprisingly for me
> queue was deleted and messages just vanished into limbo.
That's the defined behaviour. From
http://www.rabbitmq.com/extensions.html#dead-letter-exchanges
<quote>
A message is dead-lettered when any of the following events occur:
- The message is rejected (basic.reject or basic.nack) with
requeue=false; or
- The TTL for the message expires.
</quote>
> Is this behavior desirable? Why?
We deliberately kept the set of operations susceptible to dead-lettering
small, to avoid unintended consequences. It is possible that actions
like auto-deletion, queue lease expiry, explicit deletion and purging
should all trigger the dead-letter mechanism, but I'd like to see
compelling use cases first before making such a change.
> How should I get around this problem? I thought about declare queue
> as non auto deleting and making own monitoring daemon, which could
> handle cleaning queues without consumers. Is there any simpler way of
> achieve my goal?
Perhaps a combination of queue leases and ttl would work. The former has
the additional advantage of allowing the system to mask temporary
consumer and connectivity failures.
Regards,
Matthias.
More information about the rabbitmq-discuss
mailing list