[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] Created: (AMQ-2949) Message priority is not always handled
From:       "Mathieu Baril (JIRA)" <jira () apache ! org>
Date:       2010-09-29 12:35:44
Message-ID: 14989728.37531285763744173.JavaMail.jira () thor
[Download RAW message or body]

Message priority is not always handled correctly
------------------------------------------------

                 Key: AMQ-2949
                 URL: https://issues.apache.org/activemq/browse/AMQ-2949
             Project: ActiveMQ
          Issue Type: Bug
          Components: Broker
    Affects Versions: 5.4.1
            Reporter: Mathieu Baril


Hi, 

I'm trying to use ActiveMQ version 5.4.1 with priority. 

The new features seems to work well when I left the prefetch size of my consumer \
equal to the default value (1000) but is not working as I'm expecting when I set the \
prefetch size to 1. 

Here is the output of the attached unint test when the prefetch size equal to 1000: 

2010-09-21 09:37:06,937 - JMS broker started 
2010-09-21 09:37:10,087 - Sent 1(P=3) 
2010-09-21 09:37:11,111 - Sent 2(P=9) 
2010-09-21 09:37:12,140 - Sent 3(P=3) 
2010-09-21 09:37:13,162 - Sent 4(P=3) 
2010-09-21 09:37:14,189 - Sent 5(P=9) 
2010-09-21 09:37:14,194 - Creating message consumer. 
2010-09-21 09:37:14,241 - *Consumer's pefetch size=1000*
2010-09-21 09:37:14,289 - Received 2(P=9) 
2010-09-21 09:37:15,276 - Sent 6(P=3) 
2010-09-21 09:37:16,326 - Received 5(P=9) 
2010-09-21 09:37:16,333 - Sent 7(P=9) 
2010-09-21 09:37:17,354 - Sent 8(P=3) 
2010-09-21 09:37:18,332 - Received 7(P=9) 
2010-09-21 09:37:18,374 - Sent 9(P=3) 
2010-09-21 09:37:19,396 - Sent 10(P=9) 
2010-09-21 09:37:20,338 - Received 10(P=9) 
2010-09-21 09:37:22,345 - Received 1(P=3) 
2010-09-21 09:37:24,351 - Received 3(P=3) 
2010-09-21 09:37:26,358 - Received 4(P=3) 
2010-09-21 09:37:28,365 - Received 6(P=3) 
2010-09-21 09:37:30,371 - Received 8(P=3) 
2010-09-21 09:37:32,380 - Received 9(P=3) 
2010-09-21 09:37:34,387 - Expected result : [2(P=9), 5(P=9), 7(P=9), 10(P=9), 1(P=3), \
3(P=3), 4(P=3), 6(P=3), 8(P=3), 9(P=3)]  2010-09-21 09:37:34,387 - Result : [2(P=9), \
5(P=9), 7(P=9), 10(P=9), 1(P=3), 3(P=3), 4(P=3), 6(P=3), 8(P=3), 9(P=3)]  Tests run: \
1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 33.851 sec 


Running the same test with a prefetch value of 1 give me a different result: 

2010-09-21 09:39:13,096 - JMS broker started 
2010-09-21 09:39:16,293 - Sent 1(P=3) 
2010-09-21 09:39:17,338 - Sent 2(P=9) 
2010-09-21 09:39:18,368 - Sent 3(P=3) 
2010-09-21 09:39:19,413 - Sent 4(P=3) 
2010-09-21 09:39:20,443 - Sent 5(P=9) 
2010-09-21 09:39:20,443 - Creating message consumer. 
2010-09-21 09:39:20,489 - *Consumer's pefetch size=1*
2010-09-21 09:39:20,536 - Received 2(P=9) 
2010-09-21 09:39:21,511 - Sent 6(P=3) 
2010-09-21 09:39:22,550 - Received 5(P=9) 
2010-09-21 09:39:22,559 - *Sent 7(P=9)*
2010-09-21 09:39:23,620 - Sent 8(P=3) 
2010-09-21 09:39:24,587 - *Received 1(P=3)*
2010-09-21 09:39:24,650 - Sent 9(P=3) 
2010-09-21 09:39:25,640 - Sent 10(P=9) 
2010-09-21 09:39:26,590 - *Received 3(P=3) *
2010-09-21 09:39:28,567 - *Received 4(P=3) *
2010-09-21 09:39:30,574 - Received 7(P=9) 
2010-09-21 09:39:32,610 - Received 10(P=9) 
2010-09-21 09:39:34,622 - Received 6(P=3) 
2010-09-21 09:39:36,634 - Received 8(P=3) 
2010-09-21 09:39:38,616 - Received 9(P=3) 
2010-09-21 09:39:40,660 - Expected result : [2(P=9), 5(P=9), 7(P=9), 10(P=9), 1(P=3), \
3(P=3), 4(P=3), 6(P=3), 8(P=3), 9(P=3)]  2010-09-21 09:39:40,660 - Result : [2(P=9), \
5(P=9), 1(P=3), 3(P=3), 4(P=3), 7(P=9), 10(P=9), 6(P=3), 8(P=3), 9(P=3)]  Tests run: \
1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 32.08 sec <<< FAILURE! 

As you can see, depending of the prefetch value, the message delivery order is not \
the same. When the prefetch is 1, the message delivery order is not correct (messages \
1,3 and 4 are received before message 7). If you look the timestamp, the message 7 is \
received by the JMS broker before message 1 is sent to the consumer. 

To run the attached unit test, you need to have maven installed and run the following \
command:  mvn test -DargLine="-DprefetchSize=<prefetch_size_value> \
-Dactivemq.port=61616" 


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic