@Override public void setMessageListener(final MessageListener listener) throws JMSException { this.listener = listener; coreListener = listener == null ? null : new JMSMessageListenerWrapper(options, connection, session, consumer, listener, ackMode); try { consumer.setMessageHandler(coreListener); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } }
@Override public void run() throws ActiveMQException { consumer.setMessageHandler(new MessageHandler() { @Override public void onMessage(final ClientMessage message) { } }); } });
@Override public void setMessageListener(final MessageListener listener) throws JMSException { this.listener = listener; coreListener = listener == null ? null : new JMSMessageListenerWrapper(options, connection, session, consumer, listener, ackMode); try { consumer.setMessageHandler(coreListener); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } }
@Override public void setMessageListener(final MessageListener listener) throws JMSException { this.listener = listener; coreListener = listener == null ? null : new JMSMessageListenerWrapper(options, connection, session, consumer, listener, ackMode); try { consumer.setMessageHandler(coreListener); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } }
@Override public void setMessageListener(final MessageListener listener) throws JMSException { this.listener = listener; coreListener = listener == null ? null : new JMSMessageListenerWrapper(options, connection, session, consumer, listener, ackMode); try { consumer.setMessageHandler(coreListener); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } }
@Override public void setMessageListener(final MessageListener listener) throws JMSException { this.listener = listener; coreListener = listener == null ? null : new JMSMessageListenerWrapper(options, connection, session, consumer, listener, ackMode); try { consumer.setMessageHandler(coreListener); } catch (ActiveMQException e) { throw JMSExceptionHelper.convertFromActiveMQException(e); } }
public void start() throws Exception { consumerLocator = createNettyNonHALocator(); factoryLocator = createSessionFactory(consumerLocator); session = factoryLocator.createTransactedSession(); consumer = session.createConsumer(inQueue); producer = session.createProducer(outQueue); consumer.setMessageHandler(this); session.start(); }
@Test public void testClearListener() throws Exception { ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.start(); ClientConsumer consumer = session.createConsumer(QUEUE); consumer.setMessageHandler(new MessageHandler() { @Override public void onMessage(final ClientMessage msg) { } }); consumer.setMessageHandler(null); consumer.receiveImmediate(); session.close(); }
private void doTestBasicGroupingUsingConnectionFactory() throws Exception { ClientProducer clientProducer = clientSession.createProducer(qName); ClientConsumer consumer = clientSession.createConsumer(qName); ClientConsumer consumer2 = clientSession.createConsumer(qName); clientSession.start(); int numMessages = 100; for (int i = 0; i < numMessages; i++) { ClientMessage message = createTextMessage(clientSession, "m" + i); clientProducer.send(message); } CountDownLatch latch = new CountDownLatch(numMessages); DummyMessageHandler dummyMessageHandler = new DummyMessageHandler(latch, true); consumer.setMessageHandler(dummyMessageHandler); DummyMessageHandler dummyMessageHandler2 = new DummyMessageHandler(latch, true); consumer2.setMessageHandler(dummyMessageHandler2); Assert.assertTrue(latch.await(10, TimeUnit.SECONDS)); Assert.assertEquals(100, dummyMessageHandler.list.size()); Assert.assertEquals(0, dummyMessageHandler2.list.size()); consumer.close(); consumer2.close(); }
void prepare() throws Exception { session = sf.createSession(true, true, 0); queueName = UUIDGenerator.getInstance().generateStringUUID(); session.createQueue(dest, RoutingType.ANYCAST, queueName); consumer = session.createConsumer(queueName); consumer.setMessageHandler(this); }
public ArtemisBenchmarkConsumer(String topic, String queueName, ClientSessionFactory sessionFactory, ConsumerCallback callback) throws ActiveMQException { session = sessionFactory.createSession(); session.createQueue(SimpleString.toSimpleString(topic), RoutingType.MULTICAST, SimpleString.toSimpleString(queueName), true /* durable */); consumer = session.createConsumer(queueName); consumer.setMessageHandler(message -> { byte[] payload = new byte[message.getBodyBuffer().readableBytes()]; message.getBodyBuffer().readBytes(payload); callback.messageReceived(payload, message.getTimestamp()); try { message.acknowledge(); } catch (ActiveMQException e) { log.warn("Failed to acknowledge message", e); } }); session.start(); }
private void doTestBasicGrouping() throws Exception { ClientProducer clientProducer = clientSession.createProducer(qName); ClientConsumer consumer = clientSession.createConsumer(qName); ClientConsumer consumer2 = clientSession.createConsumer(qName); clientSession.start(); SimpleString groupId = new SimpleString("grp1"); int numMessages = 100; for (int i = 0; i < numMessages; i++) { ClientMessage message = createTextMessage(clientSession, "m" + i); message.putStringProperty(Message.HDR_GROUP_ID, groupId); clientProducer.send(message); } CountDownLatch latch = new CountDownLatch(numMessages); DummyMessageHandler dummyMessageHandler = new DummyMessageHandler(latch, true); consumer.setMessageHandler(dummyMessageHandler); DummyMessageHandler dummyMessageHandler2 = new DummyMessageHandler(latch, true); consumer2.setMessageHandler(dummyMessageHandler2); Assert.assertTrue(latch.await(10, TimeUnit.SECONDS)); Assert.assertEquals(100, dummyMessageHandler.list.size()); Assert.assertEquals(0, dummyMessageHandler2.list.size()); consumer.close(); consumer2.close(); }
private void doTestBasicGroupingMultipleProducers() throws Exception { ClientProducer clientProducer = clientSession.createProducer(qName); ClientProducer clientProducer2 = clientSession.createProducer(qName); ClientProducer clientProducer3 = clientSession.createProducer(qName); ClientConsumer consumer = clientSession.createConsumer(qName); ClientConsumer consumer2 = clientSession.createConsumer(qName); clientSession.start(); int numMessages = 100; for (int i = 0; i < numMessages; i++) { ClientMessage message = createTextMessage(clientSession, "m" + i); clientProducer.send(message); clientProducer2.send(message); clientProducer3.send(message); } CountDownLatch latch = new CountDownLatch(numMessages * 3); DummyMessageHandler dummyMessageHandler = new DummyMessageHandler(latch, true); consumer.setMessageHandler(dummyMessageHandler); DummyMessageHandler dummyMessageHandler2 = new DummyMessageHandler(latch, true); consumer2.setMessageHandler(dummyMessageHandler2); Assert.assertTrue(latch.await(10, TimeUnit.SECONDS)); Assert.assertEquals(300, dummyMessageHandler.list.size()); Assert.assertEquals(0, dummyMessageHandler2.list.size()); consumer.close(); consumer2.close(); }
@Test public void testGroupIdAutomaticallyNotSet() throws Exception { ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); session.createQueue(groupTestQ, groupTestQ, null, false); ClientProducer producer = session.createProducer(groupTestQ); final CountDownLatch latch = new CountDownLatch(100); MyMessageHandler myMessageHandler = new MyMessageHandler(latch); MyMessageHandler myMessageHandler2 = new MyMessageHandler(latch); ClientConsumer consumer = session.createConsumer(groupTestQ); consumer.setMessageHandler(myMessageHandler); ClientConsumer consumer2 = session.createConsumer(groupTestQ); consumer2.setMessageHandler(myMessageHandler2); session.start(); final int numMessages = 100; for (int i = 0; i < numMessages; i++) { producer.send(session.createMessage(false)); } waitForLatch(latch); session.close(); Assert.assertEquals(50, myMessageHandler.messagesReceived); Assert.assertEquals(50, myMessageHandler2.messagesReceived); }
@Test public void testNoReceiveWithListener() throws Exception { ClientSessionFactory sf = createSessionFactory(locator); ClientSession session = sf.createSession(false, true, true); ClientConsumer consumer = session.createConsumer(QUEUE); consumer.setMessageHandler(new MessageHandler() { @Override public void onMessage(final ClientMessage msg) { } }); try { consumer.receiveImmediate(); Assert.fail("Should throw exception"); } catch (ActiveMQIllegalStateException ise) { //ok } catch (ActiveMQException me) { Assert.fail("Wrong exception code"); } session.close(); }
@Test public void testReceiveThrowsExceptionWhenHandlerSet() throws Exception { ClientSessionFactory cf = createSessionFactory(locator); ClientSession session = cf.createSession(false, true, true); session.createQueue(addressA, queueA, false); ClientConsumer cc = session.createConsumer(queueA); session.start(); cc.setMessageHandler(new MessageHandler() { @Override public void onMessage(final ClientMessage message) { } }); try { cc.receive(); Assert.fail("should throw exception"); } catch (ActiveMQIllegalStateException ise) { //ok } catch (ActiveMQException e) { Assert.fail("Invalid Exception type:" + e.getType()); } session.close(); }
@Test public void testRequest() throws Exception { final SimpleString key = RandomUtil.randomSimpleString(); long value = RandomUtil.randomLong(); SimpleString requestAddress = new SimpleString("AdTest"); SimpleString requestQueue = RandomUtil.randomSimpleString(); final ClientSession session = sf.createSession(false, true, true); session.start(); session.createTemporaryQueue(requestAddress, requestQueue); ClientConsumer requestConsumer = session.createConsumer(requestQueue); requestConsumer.setMessageHandler(new SimpleMessageHandler(key, session)); ClientRequestor requestor = new ClientRequestor(session, requestAddress); ClientMessage request = session.createMessage(false); request.putLongProperty(key, value); ClientMessage reply = requestor.request(request, 500); Assert.assertNotNull("reply was not received", reply); Assert.assertEquals(value, reply.getObjectProperty(key)); Thread.sleep(5000); session.close(); }
@Test public void testRequestWithRequestConsumerWhichDoesNotReply() throws Exception { SimpleString requestAddress = RandomUtil.randomSimpleString(); SimpleString requestQueue = RandomUtil.randomSimpleString(); ClientSessionFactory sf = createSessionFactory(locator); final ClientSession session = sf.createSession(false, true, true); session.start(); session.createTemporaryQueue(requestAddress, requestQueue); ClientConsumer requestConsumer = session.createConsumer(requestQueue); requestConsumer.setMessageHandler(new MessageHandler() { // return a message with the negative request's value @Override public void onMessage(final ClientMessage request) { // do nothing -> no reply } }); ClientRequestor requestor = new ClientRequestor(session, requestAddress); ClientMessage request = session.createMessage(false); ClientMessage reply = requestor.request(request, 500); Assert.assertNull(reply); session.close(); }
@Test public void testReceiveWithListeners() throws Exception { SimpleString dla = new SimpleString("DLA"); SimpleString qName = new SimpleString("q1"); AddressSettings addressSettings = new AddressSettings().setMaxDeliveryAttempts(2).setDeadLetterAddress(dla); server.getAddressSettingsRepository().addMatch(qName.toString(), addressSettings); SimpleString dlq = new SimpleString("DLQ1"); clientSession.createQueue(dla, dlq, null, false); clientSession.createQueue(qName, qName, null, false); ClientProducer producer = clientSession.createProducer(qName); producer.send(createTextMessage(clientSession, "heyho!")); ClientConsumer clientConsumer = clientSession.createConsumer(qName); final CountDownLatch latch = new CountDownLatch(2); TestHandler handler = new TestHandler(latch, clientSession); clientConsumer.setMessageHandler(handler); clientSession.start(); assertTrue(latch.await(5, TimeUnit.SECONDS)); assertEquals(handler.count, 2); clientConsumer = clientSession.createConsumer(dlq); Message m = clientConsumer.receive(5000); Assert.assertNotNull(m); Assert.assertEquals(m.getBodyBuffer().readString(), "heyho!"); }
@Test public void testTwoRequests() throws Exception { final SimpleString key = RandomUtil.randomSimpleString(); long value = RandomUtil.randomLong(); SimpleString requestAddress = RandomUtil.randomSimpleString(); SimpleString requestQueue = RandomUtil.randomSimpleString(); ClientSessionFactory sf = createSessionFactory(locator); final ClientSession session = sf.createSession(false, true, true); session.start(); session.createTemporaryQueue(requestAddress, requestQueue); ClientConsumer requestConsumer = session.createConsumer(requestQueue); requestConsumer.setMessageHandler(new SimpleMessageHandler(key, session)); ClientRequestor requestor = new ClientRequestor(session, requestAddress); ClientMessage request = session.createMessage(false); request.putLongProperty(key, value); ClientMessage reply = requestor.request(request, 500); Assert.assertNotNull("reply was not received", reply); Assert.assertEquals(value, reply.getObjectProperty(key)); request = session.createMessage(false); request.putLongProperty(key, value + 1); reply = requestor.request(request, 500); Assert.assertNotNull("reply was not received", reply); Assert.assertEquals(value + 1, reply.getObjectProperty(key)); session.close(); }