activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From janylj <jan...@gmail.com>
Subject "ERROR RecoveryListenerAdapter" happens on a durable subscriber
Date Mon, 08 Sep 2008 19:16:57 GMT

Hello,

I am writing a small unit test of durable subscriber on ActiveMQ 5.1. I
found this error is happening consistently the second time I ran this test
case.

ERROR RecoveryListenerAdapter        - Message id ID:XXXX could not be
recovered from the data store - already dispatched

The program I have:

	@Test
	public void testConsumeDurableTopic() {		
		try {
			//Start durable subscriber
			this.startSubscriberSeparately(durableSubscriber);
			//Send a message
			this.produceMessage(true);

			
			this.produceMessage(true);
			System.out.println("Should receive the message sent during the
downtime---------------");
			//Start durable subscriber after sending message
			this.startSubscriberSeparately(durableSubscriber);


			durableSubscriber.unsubscribe();
			
			this.produceMessage(true);
			this.startSubscriberSeparately(durableSubscriber);
			System.out.println("Should NOT receive the message sent after
unsubscribe-------------");
		
		} catch(Exception e) {
			e.printStackTrace();
			fail("Fail to consume messages from testConsumeDurableTopic().");
		}		
	}	
	/**
	 * Start the topic subscriber in a separate thread. It tries to receive one
message and block until receiving it.
	 */
	protected void startSubscriberSeparately (final SynchronizedMessageConsumer
consumer) {
        final Runnable starter = new Runnable() {
            public void run() { 
    			try {
    				consumer.receive(topic);
				} catch (ConsumerFailureException e) {
					e.printStackTrace();
					fail("Fail to start the consumer on a separate thread.");
				}               	
            }
        };
        final ExecutorService pool = Executors.newFixedThreadPool(1);
        pool.execute(starter);
	}	

The first run is fine. Then the second run would cause "ERROR
RecoveryListenerAdapter". Then I cannot receive any message from that topic
any more. What's the cause for this error? I guess the reason is that the
message is prefetched to the client side, then that message could not be
recovered from the data store. However, connecting to the broker
"tcp://localhost:61616?jms.prefetchPolicy.topicPrefetch=1" doesn't fix the
problem. Any input is very much appreciated.

-- 
View this message in context: http://www.nabble.com/%22ERROR-RecoveryListenerAdapter%22-happens-on-a-durable-subscriber-tp19379169p19379169.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.


Mime
View raw message