[rabbitmq-discuss] Routing through multiple dead-letter exchanges

Matthias Radestock matthias at rabbitmq.com
Tue Aug 20 22:23:55 BST 2013


On 20/08/13 16:37, Tim Watson wrote:
> Hi,
>
> On 20 Aug 2013, at 16:12, reaperman123456789 at gmail.com
> <mailto:reaperman123456789 at gmail.com> wrote:
>> Everything works as expected up to this point. However, when the
>> message TTL of "deferredqueue" is up, I expected the message to
>> reappear again in "livequeue" via the dead-letter exchange of
>> "deferredqueue", but the message is dropped instead.
>> If, however, I ack the message in "livequeue" and publish it to
>> "deferredqueue" using basic_publish, instead of rejecting it, the
>> message /does/ reappear in "livequeue"  after the TTL is over, as
>> expected.
>>
>> So my question is, is this the normal (intended) behavior, or am I
>> doing something wrong?
>
> This is indeed normal/expected behaviour. Dead letter cycles that occur
> entirely due to expiry are removed, so if the TTL expiry initially
> occurred in 'livequeue' then when the message later expires in
> 'deferredqueue' it won't be delivered to 'livequeue' again.

But in the OPs example, the initial dead-lettering from livequeue is not 
due to TTL but a reject. So there is no TTL-only cycle and hence the 
message should be re-delivered to livequeue.

The cycle detection used to be stricter though prior to 3.1.0. Perhaps 
the OP is running an older version?

Matthias.


More information about the rabbitmq-discuss mailing list