[rabbitmq-discuss] Message Priority & 'Headers' Exchange Type (was: Net::AMQP Perl Client - Status?)
darien at kindlund.com
Wed Jan 14 19:47:23 GMT 2009
Hi Ben & Tony,
Understood. I would say message prioritization would be exceedingly
useful from an operational perspective. This is something normally
that each AMQP-aware application we implement would benefit from.
Otherwise, we'd have to create different queues per priority and have
the app monitor each queue in priority-based order. Not impossible to
implement, but not ideal.
Taking that type of implementation to the next logical step:
1) Is there any way to perform "non-blocking" SUBSCRIBEs via
Net::Stomp to RabbitMQ, in order to have a perl consumer application
monitor multiple queues in series? Or, is the recommendation to use
something like ithreads to create a separate thread per subscription
and multiplex the messages manually within the application? (See what
I mean, by increased complexity costs on the app?)
The 'headers' exchange type comes in handy as a customizable
specification. Yes, we can 'transcode' requirements like (Foo: A,
Bar: B) into queues with routing keys of (foo.*.bar.*), but that gets
awkward for really long lists of headers. With the
'message.destination' size of 'str8', that's 255 UTF-8 chars, so it
doesn't scale nicely. Though, it's not a show stopper for initial
On Wed, Jan 14, 2009 at 2:23 PM, Ben Hood <0x6e6562 at gmail.com> wrote:
> On Wed, Jan 14, 2009 at 7:15 PM, Darien Kindlund <darien at kindlund.com> wrote:
>> 1) Since RabbitMQ implements only v0.8 (0-8) of the AMQP spec, it does
>> not support the 'headers' exchange type (as defined in 0-10 spec).
> It does not support the headers exchange as defined in 0.9.1 either
> (0.9.1 is the next version of the protocol that we will support).
>> If this is correct, can anyone indicate when the 'headers' exchange
>> type will be (expected to be) introduced into a version of RabbitMQ?
> Unlikely for 1.6. This is because you are the first person in a very
> long time that has asked for this exchange type. We will get around to
> it, but there is no ETA. In general, we try to prioritize stuff that
> gets asked for a lot, and then of course, when change the schedule to
> include stuff for very persuasive people :-)
>> 2) Both (0-8) and (0-10) AMQP specifications talk about "message
>> priority" (i.e., message.delivery-priority). Can you give me an
>> example of how you construct different priority messages via
>> Net::STOMP? Do you just specify the "priority" header with an integer
>> value of 0,1,2,3,4,5,6,7,8, or 9? Or, are message priorities not even
>> implemented in RabbitMQ v1.5?
> No they are not - but there is a chance they may appear in the not too
> distant future. Again, for the same reason - you're the first to ask
> about this - but we actually have draw up some specs for this. As
> always, no ETA.
More information about the rabbitmq-discuss