activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Davies <rajdav...@gmail.com>
Subject Re: DefaultMessageListenerContainer and 5.1
Date Mon, 12 May 2008 07:25:15 GMT

On 8 May 2008, at 22:02, BlueFox wrote:

>
> I just did some more checking, turns out it is the QueueBrowser that  
> is
> causing the duplicate message problem. I have a QueueBrowser that  
> uses the
> following code to periodically verify the queue size and perform
> verification after queue size is zero.
>
> private static class JMSBrowser implements SessionCallback {
> 		@Override
> 		public Object doInJms(javax.jms.Session session) throws  
> JMSException {
> 			QueueSession queueSession = (QueueSession) session;
> 			Queue queue = queueSession.createQueue("test.queue");
>
> 			try {
> 				System.out.println("Monitoring queue...");
> 				boolean hasMoreItem = true;
>
> 				while (hasMoreItem) {
> 					QueueBrowser browser = queueSession.createBrowser(queue);
>
> 					hasMoreItem = browser.getEnumeration().hasMoreElements();
>
> 					browser.close();
> 					
> 					System.out.println("Waiting for the queue to clear up...");
> 					// wait for 1s until checking
> 					Thread.sleep(1000);
> 				}
>
> 			} catch (Exception e) {
> 				e.printStackTrace();
> 			}
>
> 			System.out.println("Queue cleared, proceed with verification");
> 			queueSession.close();
>
> 			return null;
> 		}
> 	}
>
> Before upgrading to 5.1, this queue browser works correctly and only
> terminates when the queue is empty. (Works in both 5.0 and 4.1.1)  
> However,
> with new 5.1 binary I get 2 error behavior:
> 1. This queue monitor will terminate even if there is still data in  
> the
> queue
> 2. Duplicate messages are delivered to consumer if monitor queue is  
> used.
>
>
> BlueFox wrote:
>>
>> Hi I just upgraded to 5.1 and there seems to be a very weird behavior
>> regarding the message redelivery.
>> Before upgrade to 5.1, I had the Spring 2.5.3 and 5.0 running fine  
>> with
>> the following setup.
>> 1. I have a single producer sending and recording 100 persistent  
>> messages
>> to a queue.
>> 2. maximumRedeliveries for message is set to -1
>> 3. I use Spring DefaultMessageListenerContainer (sessionTransacted  
>> = true)
>> to create a single exclusive consumer on the queue, and
>> session.rollback(); is randomly called to simulate transaction  
>> failure.
>> 4. When the queue size reaches 0, I verify that all 100 messages are
>> correctly received and in order.
>>
>> Everything was working fine in 5.0, but in 5.1, I noticed that  
>> duplicate
>> messages were received. However, if I change the cacheLevelName on  
>> the
>> DefaultMessageListenerContainer from the default CACHE_CONSUMER to
>> anything else, the test then runs fine. However, since I also have
>> exponential backoff implemented for redelivery, changing the cache  
>> level
>> will render the policy useless since the connection & session are
>> recreated by the container.
>>
>> Thoughts?
>>
>
> -- 
> View this message in context: http://www.nabble.com/DefaultMessageListenerContainer-and-5.1-tp17135019s2354p17136302.html
> Sent from the ActiveMQ - User mailing list archive at Nabble.com.
>


could you raise a jira for this issue so we can track it ?




cheers,

Rob

http://open.iona.com/ -Enterprise Open Integration
http://rajdavies.blogspot.com/




Mime
View raw message