hmm. that is a problem. If you use persistent delivery,
DeliveryMode.PERSISTENT or pass -Ddurable=true to the ant producer
task, the priority order will be respected.

I ran a quick variant of the
org.apache.activemq.store.MessagePriorityTest.testQueues from
activemq-core with non persistent delivery and it fails.
Can you raise a jira issue to track this. It needs a bit of
investigation to see why sorting is being bypassed for non persistent
messages.

On 14 November 2011 17:33, Mihai Osian <mihai.os...@gmail.com> wrote:
>  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.
>



-- 
http://fusesource.com
http://blog.garytully.com

Reply via email to