Hello, I am trying to enable priority consumption and I can't seem to get it working right. I am using ActiveMQ version 5.5.1 and I have followed the instructions from http://activemq.apache.org/how-can-i-support-priority-queues.html. For testing I modified the example code that comes with ActiveMQ itself so that the ProducerTool sends 180 messages with cycling priority (0,1,..8,0,1,2...). After the producer finishes the job I start the consumer and look at the order in which the messages are received. The first few messages are sometimes received in an apparently random order, after which they start coming in descending order of their priority, as I expect. I have also discovered that if I set queuePrefetch="1" in the "policyEntry" element from the XML configuration file I get an unsorted list. Similarly, setting it to 3 (for example) results in the output list being thoroughly randomized (messages are presumably sorted in groups of 3, but not quite).
My questions are: 1. Can somebody explain the results I see ? Am I missing something ? 2. Is there a way to get the all messages fully sorted in descending order, assuming one single consumer that is started after all messages are in the queue ? 3. The ActiveMQ documentation page (written for version 5.4) that I mentioned above says that KahaDB supports 3 levels of priority (<5, 5, and >5). However: 3a. The first few messages that I get are sometimes low-priority (<5). 3b. With a larger queuePrefetch most messages are fully sorted in descending order, so it may be that the page is out of date and in the latest version it is supposed to support the full priority range. Still, I don't understand the output. Other technical information: - ActiveMQ 5.5.1 (also tested 5.5.0, same behavior) - activemq started from the command line with: ./bin/activemq console xbean:conf/activemq-priority.xml The activemq-priority.xml is a copy of the conf/activemq.xml, plus the following entry: <policyEntry queue="TEST.FOO" prioritizedMessages="true" queuePrefetch="200" producerFlowControl="true" memoryLimit="1mb"></policyEntry> - A modified version of the ActiveMQ example (also containing the activemq-priority.xml file) can be found here: http://www.mediafire.com/?z7u5fhhlfbt3ano , if anybody wants to check the code. ========================================= An example output copy-pasted from my console: mike@dell:~/tmp/apache-activemq-5.5.0/example$ ant producer Buildfile: /home/mike/tmp/apache-activemq-5.5.0/example/build.xml init: compile: [javac] /home/mike/tmp/apache-activemq-5.5.0/example/build.xml:152: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds producer: [echo] Running producer against server at $url = tcp://localhost:61616 for subject $subject = TEST.FOO [java] Connecting to URL: tcp://localhost:61616 [java] Publishing a Message with size 1000 to queue: TEST.FOO [java] Using non-persistent messages [java] Sleeping between publish 0 ms [java] Running 1 parallel threads [java] [Thread-1] Sending message: 'Message with priority: 0 index: 0 sent at: Mon Nov...' with priority 0 [java] [Thread-1] Sending message: 'Message with priority: 1 index: 1 sent at: Mon Nov...' with priority 1 [java] [Thread-1] Sending message: 'Message with priority: 2 index: 2 sent at: Mon Nov...' with priority 2 [java] [Thread-1] Sending message: 'Message with priority: 3 index: 3 sent at: Mon Nov...' with priority 3 [java] [Thread-1] Sending message: 'Message with priority: 4 index: 4 sent at: Mon Nov...' with priority 4 [java] [Thread-1] Sending message: 'Message with priority: 5 index: 5 sent at: Mon Nov...' with priority 5 [java] [Thread-1] Sending message: 'Message with priority: 6 index: 6 sent at: Mon Nov...' with priority 6 [java] [Thread-1] Sending message: 'Message with priority: 7 index: 7 sent at: Mon Nov...' with priority 7 [java] [Thread-1] Sending message: 'Message with priority: 8 index: 8 sent at: Mon Nov...' with priority 8 [java] [Thread-1] Sending message: 'Message with priority: 0 index: 9 sent at: Mon Nov...' with priority 0 [java] [Thread-1] Sending message: 'Message with priority: 1 index: 10 sent at: Mon No...' with priority 1 [java] [Thread-1] Sending message: 'Message with priority: 2 index: 11 sent at: Mon No...' with priority 2 [java] [Thread-1] Sending message: 'Message with priority: 3 index: 12 sent at: Mon No...' with priority 3 [java] [Thread-1] Sending message: 'Message with priority: 4 index: 13 sent at: Mon No...' with priority 4 [java] [Thread-1] Sending message: 'Message with priority: 5 index: 14 sent at: Mon No...' with priority 5 [java] [Thread-1] Sending message: 'Message with priority: 6 index: 15 sent at: Mon No...' with priority 6 ... mike@dell:~/tmp/apache-activemq-5.5.0/example$ ant consumer Buildfile: /home/mike/tmp/apache-activemq-5.5.0/example/build.xml init: compile: [javac] /home/mike/tmp/apache-activemq-5.5.0/example/build.xml:152: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds consumer: [echo] Running consumer against server at $url = tcp://localhost:61616 for subject $subject = TEST.FOO [java] Connecting to URL: tcp://localhost:61616 [java] Consuming queue: TEST.FOO [java] Using a non-durable subscription [java] JMS Selector [java] Running 1 parallel threads [java] [Thread-1] We are about to wait until we consume: 180 message(s) then we will shutdown [java] [Thread-1] Received: 'Message with priority: 7 index: 7 sent at: Mon Nov...' (length 1000) [java] [Thread-1] Received: 'Message with priority: 8 index: 8 sent at: Mon Nov...' (length 1000) [java] [Thread-1] Received: 'Message with priority: 8 index: 17 sent at: Mon No...' (length 1000) [java] [Thread-1] Received: 'Message with priority: 7 index: 16 sent at: Mon No...' (length 1000) [java] [Thread-1] Received: 'Message with priority: 6 index: 6 sent at: Mon Nov...' (length 1000) [java] [Thread-1] Received: 'Message with priority: 6 index: 15 sent at: Mon No...' (length 1000) [java] [Thread-1] Received: 'Message with priority: 5 index: 5 sent at: Mon Nov...' (length 1000) .... ====================== Thanks in advance, Mihai http://activemq.2283324.n4.nabble.com/file/n4040260/example.tgz example.tgz -- View this message in context: http://activemq.2283324.n4.nabble.com/Message-priority-tp4040260p4040260.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.