activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Tully <>
Subject Re: Real Priority Message Consuming in ActiveMQ
Date Fri, 04 May 2012 10:34:06 GMT
hmm. prefetch may be causing you some trouble, use prefetch=0 to
ensure each receive asks the broker for the next highest priority
message, otherwise a newly created high priority message could be
backed up behind prefetched low priority ones.

Note the test for priority:

If you can provide some variation of that that that demonstrates a
problem, we can easily look into it.

Try a recent fuse release[1] or the current apache snapshot[2] or the
5.6 release candidate[3], all should suffice


On 4 May 2012 11:02, nico <> wrote:
> Hi there,
> we are using activeMQ 5.5.2 as message broker for means of job distribution
> across systems and as safeguard against failures.
> Now a new reqiurement rouse in the means of consuming messages in order of
> their priority, so that important jobs are processed before unimportant
> ones.
> Looking into the documentation and the all so often recited faq about "How
> can I support priority queues?" it seems quite easy to just activate
> priority message consuming with the boolean prioritizedMessages and a little
> configuration on the publisher side to include priorities in your jms
> messages.
> But it doesn't work. Not as I would expect real priority message consuming
> expect to be working, by always pulling the highest prioritized message out
> of the queue. And looking into several blog entries and jira bugs it evens
> shows that it's not even supposed to work. Maybe on a entry buffer level of
> messages being ordered when they enter the queue simultaneously, but not
> when they are persistet in the queue.
> So then I looked into the also stated "Alternatives" for priority message
> consuming.
> The Selector Approach doesn't suite our needs, cause we only have a little
> number of consumers, that all have to process high and low priority jobs.
> The Resequencer Approach sounded promising too, until I realized that it is
> not intended to resequence messages within a queue, but just in the
> transition from one queue to another. I implemented the 2 queues with
> producer and consumer being connected by a BatchResequencer approach, but
> that doesn't work very well.
> The problem is this: say there are a 100 low priority messages and 1 high
> priority message coming in in the first minute, the resequencer takes those
> and writes them in the consumer queue with the high priority message being
> first. Fine. But then in the seconde minute 50 more high priority messages
> enter the producer queue. The Resequencer takes those messages and puts them
> behind the low priorized messages in the consumer queue. So no more
> priorization. One can of course play around with the timeouts and batch
> sizes, but you will never reach "real priority message consuming" where a
> higher priorized message is always consumed before a lower priorized
> message.
> So I have two issues I would like to discuss:
> 1. Does activeMQ support real prioritized message consuming, where a high
> priority message is always consumed before a low prio message, even if they
> entered the queue minutes apart?
> 2. If it doesn't, why does the faq "How can I support priority queues?"
> state that it does? I didn't see one Remark on there like "Oh and if you
> mean 'high prio before low prio always' with message priority, then sorry no
> we don't support that".
> btw: I know the JMS specification doesn't require priority messaging order,
> or any order, but as I looked into hornetQ for example, they have a perfect
> implementation of real message priority consuming. So it should be possible.
> Hope this wasn't too long for anyone to answer ;o)
> Thanks in advance!
> Nico
> --
> View this message in context:
> Sent from the ActiveMQ - User mailing list archive at


View raw message