* rolled back session and we receive the message whose acknowledgment was cancelled on a new
* session.
*/
public void testRedeliveredQueue2() throws Exception
{
Connection conn = null;
try
{
conn = cf.createConnection();
Session sendSession = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer prod = sendSession.createProducer(queue);
prod.send(sendSession.createTextMessage("a message"));
log.debug("Message was sent to the queue");
conn.close();
conn = cf.createConnection();
Session sess = conn.createSession(true, Session.SESSION_TRANSACTED);
MessageConsumer cons = sess.createConsumer(queue);
conn.start();
TextMessage tm = (TextMessage)cons.receive();
assertEquals("a message", tm.getText());
assertFalse(tm.getJMSRedelivered());
assertEquals(1, tm.getIntProperty("JMSXDeliveryCount"));
sess.rollback();
sess.close();
Session sess2 = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
cons = sess2.createConsumer(queue);
tm = (TextMessage)cons.receive();
assertEquals("a message", tm.getText());
assertEquals(2, tm.getIntProperty("JMSXDeliveryCount"));
assertTrue(tm.getJMSRedelivered());
}
finally
{
if (conn != null)
{
conn.close();
}
}
}