Learning durable subscription. I tweaked the example given here. I have written two programs. In one I create topic and send message with PERSISTENCE mode. In other program I create durable subscribers for same topic and try to receive.
I run first program. It finishes successfully. Then I run second(consumer) program. But there it does not get any message. receive() message remains blocked.
What am I missing?
Main part of producer program is
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
try{
con = connectionFactory.createConnection();
con.setClientID("DurabilityTest");
con.start();
session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic myFirstTopic = session.createTopic("myFirstTopic");
MessageProducer producer = session.createProducer(myFirstTopic);
// Registering consumers. But not calling receive on them
MessageConsumer consumer1 = session.createDurableSubscriber(myFirstDurableTopic, "consumer1", "", false);
MessageConsumer consumer2 = session.createDurableSubscriber(myFirstDurableTopic,"consumer2", "", false);
TextMessage txtMsg = session.createTextMessage("Namaskar mitranno2!!");
producer.send(myFirstTopic, txtMsg, DeliveryMode.PERSISTENT, Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE+10000);
}catch(JMSException e){
e.printStackTrace();
}
Main part of consumer program is
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
try{
con = connectionFactory.createConnection();
con.setClientID("DurabilityTest");
con.start();
session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
Topic myFirstTopic = session.createTopic("myFirstTopic");
MessageConsumer consumer1 = session.createDurableSubscriber(myFirstTopic, "consumer1", "", false);
processMessage(consumer1,consumer1.receive());
MessageConsumer consumer2 = session.createDurableSubscriber(myFirstTopic,"consumer2", "", false);
processMessage(consumer2,consumer2.receive());
}catch(JMSException e){
e.printStackTrace();
}