@Test public void testOutOfOrder() throws Exception { Connection conn = createConnection(); Session sess = conn.createSession(true, Session.SESSION_TRANSACTED); Session sess2 = conn.createSession(true, Session.SESSION_TRANSACTED); MessageProducer prod = sess.createProducer(queue1); MessageConsumer cons = sess2.createConsumer(queue1); CountDownLatch latch = new CountDownLatch(1); final int NUM_MESSAGES = 1000; MyListener listener = new MyListener(latch, sess2, NUM_MESSAGES); cons.setMessageListener(listener); conn.start(); for (int i = 0; i < NUM_MESSAGES; i++) { TextMessage tm = sess.createTextMessage("message" + i); prod.send(tm); if (i % 10 == 0) { sess.commit(); } } // need extra commit for cases in which the last message index is not a multiple of 10 sess.commit(); Assert.assertTrue(latch.await(20000, MILLISECONDS)); if (listener.failed) { ProxyAssertSupport.fail("listener failed: " + listener.getError()); } }