public void send(final Object event) { if (isRunning.get()) { try { final long startTime = System.nanoTime(); publisher.send(createMessage(event)); timer.update(System.nanoTime() - startTime, TimeUnit.NANOSECONDS); } catch (JMSException ex) { if (shouldReinit(ex)) { reinit(); } else { logger.debug(String.format("Got error while trying to send a message to topic %s", topic)); } } } }
/** * Send the JMS Message using matching Message Sender implementation. * * @param destination JMS Queue/Topic. * @param message JMS Message. * @param producer JMS Message Producer. * @throws JMSException Thrown when sending the message. */ private void sendJMSMessage(Destination destination, Message message, MessageProducer producer) throws JMSException { if (JMSConstants.JMSDestinationType.QUEUE.equals(jmsConnectionFactory.getDestinationType()) || !JMSConstants.JMS_SPEC_VERSION_1_0.equals(jmsConnectionFactory.getJmsSpec())) { producer.send(destination, message, message.getJMSDeliveryMode(), message.getJMSPriority(), message.getJMSExpiration()); } else { ((TopicPublisher) producer) .send(destination, message, message.getJMSDeliveryMode(), message.getJMSPriority(), message.getJMSExpiration()); } }
/** * Send the JMS Message using matching Message Sender implementation. * * @param destination JMS Queue/Topic. * @param message JMS Message. * @param producer JMS Message Producer. * @throws JMSException Thrown when sending the message. */ private void sendJMSMessage(Destination destination, Message message, MessageProducer producer) throws JMSException { if (JMSConstants.JMSDestinationType.QUEUE.equals(jmsConnectionFactory.getDestinationType()) || !JMSConstants.JMS_SPEC_VERSION_1_0.equals(jmsConnectionFactory.getJmsSpec())) { producer.send(destination, message, message.getJMSDeliveryMode(), message.getJMSPriority(), message.getJMSExpiration()); } else { ((TopicPublisher) producer) .send(destination, message, message.getJMSDeliveryMode(), message.getJMSPriority(), message.getJMSExpiration()); } }
@Test(timeout = 60000) public void testSendAndReceiveOnTopic() throws Exception { Connection connection = createConnection("myClientId"); try { TopicSession session = (TopicSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = session.createTopic(getTopicName()); TopicSubscriber consumer = session.createSubscriber(topic); TopicPublisher producer = session.createPublisher(topic); TextMessage message = session.createTextMessage("test-message"); producer.send(message); producer.close(); connection.start(); message = (TextMessage) consumer.receive(1000); assertNotNull(message); assertNotNull(message.getText()); assertEquals("test-message", message.getText()); } finally { connection.close(); } }
@Test(timeout = 60000) public void testSendWithMultipleReceiversOnTopic() throws Exception { Connection connection = createConnection(); try { TopicSession session = (TopicSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Topic topic = session.createTopic(getTopicName()); TopicSubscriber consumer1 = session.createSubscriber(topic); TopicSubscriber consumer2 = session.createSubscriber(topic); TopicPublisher producer = session.createPublisher(topic); TextMessage message = session.createTextMessage("test-message"); producer.send(message); producer.close(); connection.start(); message = (TextMessage) consumer1.receive(1000); assertNotNull(message); assertNotNull(message.getText()); assertEquals("test-message", message.getText()); message = (TextMessage) consumer2.receive(1000); assertNotNull(message); assertNotNull(message.getText()); assertEquals("test-message", message.getText()); } finally { connection.close(); } }