[rabbitmq-discuss] RabbitMQ stomp-adapter behaviour
matthias at lshift.net
Tue Jun 9 06:09:17 BST 2009
Nicolas, Anders, and everybody else using the STOMP adapter,
Nicolas Echaniz wrote:
> it looks to me like non-STOMP extra-headers should not be required
> from the client in order to achieve what seems to be a rather common
> use case of a producer broadcasting to every subscribed consumer and
> not just to any of them (round-robinish behaviour).
Choosing the right default behaviour - i.e. what happens when SEND and
SUBSCRIBE specify nothing but the 'destination' header - is tricky.
Here are some key questions that we need to answer:
1) Should messages be routed to all subscribers or just one (round-robin)?
2) Should messages be queued when there are no subscribers?
3) When a client has multiple subscriptions to the same destination,
should they receive one copy of a message or several?
Pretty much any combination of answers is plausible here and the STOMP
spec does not prescribe any particular one.
So, recognising that with extra headers we can, in principle, get any
behaviour we want, what should the *default* behaviour be?
The default behaviour of the current implementation of the RabbitMQ
1) routes messages to one consumer (round-robin) - this can be changed
to 'all' by specifying appropriate 'exchange' and 'routing_key' headers
2) does not queue messages when there are no subscribers - this can be
changed by specifying an 'auto-delete = false' header (though that does
require at least one SUBSCRIBE to start with)
3) sends only one copy of a message to a client in the event the client
has more than one subscription for the same destination - this can be
changed by specifying appropriate 'exchange' and 'routing_key' headers
Should the default behaviour be different? And why?
More information about the rabbitmq-discuss