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: http://activemq.2283324.n4.nabble.com/Real-Priority-Message-Consuming-in-ActiveMQ-tp4608262.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.