You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Sitapati das / Joshua J Wulf <si...@worldsankirtan.net> on 2012/08/06 09:31:40 UTC

Routing to second alternate exchange

How to reconcile these two seemingly contradictory things?

1. Messages must not be re-routed to a second alternate exchange


http://qpid.2158936.n2.nabble.com/Alternate-Exchange-of-Alternate-Exchange-td7000176.html
The AMQP 0-10 specification has a rule ('double-failure' on p216), that
states:

     A message which is being routed to a alternate exchange,
     MUST NOT be re-routed to a secondary alternate exchange
     if it fails to route in the primary alternate exchange.
     After such a failure, the message MUST be dropped. This
     prevents looping.

2. Orphaned/rejected messages no longer dropped if the exchange they are
routed to first has an alternate exchange.
 https://bugzilla.redhat.com/show_bug.cgi?id=679212

- Josh

Re: Routing to second alternate exchange

Posted by Gordon Sim <gs...@redhat.com>.
On 08/06/2012 08:31 AM, Sitapati das / Joshua J Wulf wrote:
> How to reconcile these two seemingly contradictory things?
>
> 1. Messages must not be re-routed to a second alternate exchange
>
>
> http://qpid.2158936.n2.nabble.com/Alternate-Exchange-of-Alternate-Exchange-td7000176.html
> The AMQP 0-10 specification has a rule ('double-failure' on p216), that
> states:
>
>       A message which is being routed to a alternate exchange,
>       MUST NOT be re-routed to a secondary alternate exchange
>       if it fails to route in the primary alternate exchange.
>       After such a failure, the message MUST be dropped. This
>       prevents looping.
>
> 2. Orphaned/rejected messages no longer dropped if the exchange they are
> routed to first has an alternate exchange.
>   https://bugzilla.redhat.com/show_bug.cgi?id=679212

The rule from the specification is intended as a way of preventing 
circular routes. As soon as you allow three exchanges in a chain, you 
would have to deal with potential message looping.

In the case of a *queue's* alternate exchange, you can safely re-route 
to that exchanges alternate-exchange if defined without any risk of 
circularity; there are still only two exchanges in the chain.

So I would argue it is a case of adhering to the spirit of the law while 
perhaps bending the letter of the law just a fraction.


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org