@Test public void testMessageListenerWithConsumerWithPrefetch1() throws Exception { final AtomicInteger counter = new AtomicInteger(0); final CountDownLatch done = new CountDownLatch(1); // Receive a message with the JMS API connection.getPrefetchPolicy().setAll(1); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); ActiveMQDestination destination = createDestination(session, destinationType); MessageConsumer consumer = session.createConsumer(destination); consumer.setMessageListener(new MessageListener() { @Override public void onMessage(Message m) { counter.incrementAndGet(); if (counter.get() == 4) { done.countDown(); } } }); // Send the messages sendMessages(session, destination, 4); assertTrue(done.await(1000, TimeUnit.MILLISECONDS)); Thread.sleep(200); // Make sure only 4 messages were delivered. assertEquals(4, counter.get()); }
@Test public void testMutiReceiveWithPrefetch1() throws Exception { // Set prefetch to 1 connection.getPrefetchPolicy().setAll(1); connection.start(); // Use all the ack modes Session session = connection.createSession(false, ackMode); destination = createDestination(session, destinationType); MessageConsumer consumer = session.createConsumer(destination); // Send the messages sendMessages(session, destination, 4); System.out.println("messages are sent."); // Make sure 4 messages were delivered. Message message = null; for (int i = 0; i < 4; i++) { message = consumer.receive(5000); System.out.println("message received: " + message + " ack mode: " + ackMode); assertNotNull(message); } assertNull(consumer.receiveNoWait()); message.acknowledge(); }
@Test public void testPrefetch1MessageNotDispatched() throws Exception { connection.getPrefetchPolicy().setAll(1); connection.start();