[rabbitmq-discuss] request for help!

Gordon Sim gsim at redhat.com
Thu May 6 17:07:13 BST 2010

On 05/06/2010 03:03 PM, Michael Bridgen wrote:
>> Let me give an example:
>> Say you have a non-destructive an destructive links attached to a node.
>> When you process a message at the node, the non-destructive link gets
>> either all the messages (if the matching for the destructive link is
>> done after matching for the non-destructive one), or no messages (if the
>> matching for the destructive link is done before matching for the
>> non-destructive one) or random subset of messages (if some form of
>> load-balancing among links is done). All in all, client has no guarantee
>> of which messages it'll get or whether it'll get at least some messages.
>> In other words, one misbehaved client can render all the other clients
>> non-functional.

I would expect an implementation to define policy around where links 
with these two types of distribution mode can be used. E.g. a pub-sub 
topic might only allow non-destructive links were valid, a plain queue 
might only allow destructive links and a browsable queue might allow 
both (with what I think are then obvious if non-deterministic 
implications for concurrent links with different modes).

(I myself prefer the terms acquiring/non-acquiring to 
destructive/non-destructive, but the names used aren't critical).

> I understand that there's a desire to accommodate e.g., JMS-like
> semantics (which I can see may have been a motivating force for
> "distribution mode").  But I think the core spec can leave room for
> those, without taking a position otherwise.
> What the spec does at the minute is to have a model that tries to
> encompass all possibilities, where it ought to be silent.

I think it is important to be able to indicate which behaviour you 
require/expect (i.e. whether you want to exclusively 'acquire' the 
message or not). I think the details of what the node you are linking to 
allows with regard to distribution mode should indeed be left 
unspecified at this level (as it is).

I view book IV as defining the minimal requirements beyond the basic 
transport (i.e. book III), allowing semantic interoperability for the 
common, basic messaging patterns without placing unnecessary burdens or 
constraints on implementations.

More information about the rabbitmq-discuss mailing list