Session sess1 = conn1.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Session sess2 = conn1.createSession(false, Session.CLIENT_ACKNOWLEDGE);
log.trace("careting consumer1");
MessageConsumer cons1 = sess1.createConsumer(topic);
log.trace("creating consumer2");
MessageConsumer cons2 = sess2.createConsumer(topic);
log.trace("starting connection");
conn1.start();
log.trace("started connection");
Session sess3 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer prod = sess3.createProducer(topic);
prod.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
TextMessage tm = sess3.createTextMessage("nurse!");
prod.send(tm);
TextMessage tm1 = (TextMessage)cons1.receive(1500);
TextMessage tm2 = (TextMessage)cons2.receive(1500);
assertNotNull(tm1);
assertNotNull(tm2);
assertEquals("nurse!", tm1.getText());
assertEquals("nurse!", tm2.getText());
//acknowledge tm1
tm1.acknowledge();
//tm2 has not been acknowledged
//so should be redelivered on session.recover
sess2.recover();
tm2 = (TextMessage)cons2.receive(1500);
assertNotNull(tm2);
assertEquals("nurse!", tm2.getText());
//but tm1 should not be redelivered