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.