@Test public void noMatchingRoutes() throws JMSException { String expected = "'no matching route'"; QueueReceiver qr = messageManager.createQueueReceiver("queue/DLQ"); clear(qr); plainEvent.fire(expected); Message m = qr.receive(3000); qr.close(); Assert.assertNull("Unexpectedly received a message", m); }
public static Message queueReceiver(QueueConnection cnn, String queueName, long timeout) throws JMSException { QueueSession session = cnn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue(queueName); QueueReceiver receiver = session.createReceiver(queue); Message msg = receiver.receive(timeout); if (msg != null) msg.acknowledge(); receiver.close(); session.close(); return msg; }
@Test public void forwardSimpleEvent_via_single_route_config() throws JMSException { String expected = "'configured via Route'"; QueueReceiver qr = messageManager.createQueueReceiver("queue/DLQ"); clear(qr); event_viaSingleRouteConfig.fire(expected); Message m = qr.receive(3000); qr.close(); Assert.assertTrue(m != null); Assert.assertTrue(m instanceof TextMessage); Assert.assertEquals(expected, ((TextMessage) m).getText()); }
public static void drainQueue(QueueConnection cnn, String queue) throws Exception { QueueSession session = cnn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); Queue q = session.createQueue(queue); QueueReceiver receiver = session.createReceiver(q); // Add a delay so that activeMQ can fetch messages from the broker // Thread.sleep(5000); Message msg = null; while ((msg = receiver.receive(1000)) != null) { System.out.println("Removing message: " + msg); msg.acknowledge(); } receiver.close(); session.close(); }
public static void main(String[] args) { try { QueueConnectionFactory queueConnectionFactory; QueueConnection queueConnection; QueueSession queueSession; QueueReceiver queueReceiver; Queue queue; TextMessage msg; // JNDI InitialContextを作成します InitialContext ctx = new InitialContext(); // Connection FactoryとQueueをLook upします queueConnectionFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY); queue = (Queue) ctx.lookup(QUEUE); // コネクションを作成 queueConnection = queueConnectionFactory.createQueueConnection(); // セッションを作成 queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); // キューレシーバーを作成 queueReceiver = queueSession.createReceiver(queue); // メッセージの配送をスタート queueConnection.start(); // メッセージの受信 while (true) { Message m = queueReceiver.receive(1); if (m != null) { if (m instanceof TextMessage) { msg = (TextMessage) m; System.out.println(msg.getText()); } else { break; } } } // 接続を切断 queueReceiver.close(); queueSession.close(); queueConnection.close(); } catch (Exception e) { e.printStackTrace(); } }
/** * Closes JMS objects. * * @exception JMSException if JMS fails to close objects due to internal error */ public void close() throws JMSException { qreceiver.close(); qsession.close(); qcon.close(); }
private void close(QueueReceiver receiver) throws Exception { receiver.close(); }
@Test(timeout = 30000) public void testReceiverCloseAgain() throws Exception { // Close it again (closing the session should have closed it already). receiver.close(); }