private void reinit() { final long startTime = System.currentTimeMillis(); synchronized (sessionMonitor) { close(); while (!isRunning.get()) { try { session = connection.createTopicSession(); publisher = session.createPublisher(session.createTopic(topic)); publisher.setDeliveryMode(DeliveryMode.NON_PERSISTENT); publisher.setTimeToLive(config.getMessagesTTLMilliseconds()); isRunning.set(true); } catch (JMSException ex) { logger.debug(String.format("Got error while trying to get a session for topic %s", topic)); } } } final long secondsToRecreate = (System.currentTimeMillis() - startTime) / 1000; logger.info(String.format("Recreated topic [%s] in %d seconds", topic, secondsToRecreate)); }
TopicPublisher pub = session.createPublisher(topic); pub.setDeliveryMode(DeliveryMode.NON_PERSISTENT); pub.setPriority(Message.DEFAULT_PRIORITY); pub.setTimeToLive(Message.DEFAULT_TIME_TO_LIVE);
topicPublisher.setDeliveryMode(deliveryMode); TextMessage textMessage = topicSession.createTextMessage(message.getMessage().toString());
/** * Topics shouldn't hold on to messages if there are no subscribers */ @Test public void testPersistentMessagesForTopicDropped() throws Exception { TopicConnection topicConn = createTopicConnection(); TopicSession sess = topicConn.createTopicSession(true, 0); TopicPublisher pub = sess.createPublisher(ActiveMQServerTestCase.topic1); pub.setDeliveryMode(DeliveryMode.PERSISTENT); Message m = sess.createTextMessage("testing123"); pub.publish(m); sess.commit(); topicConn.close(); checkEmpty(ActiveMQServerTestCase.topic1); }
/** * Topics shouldn't hold on to messages when the non-durable subscribers close */ @Test public void testPersistentMessagesForTopicDropped2() throws Exception { TopicConnection topicConn = createTopicConnection(); topicConn.start(); TopicSession sess = topicConn.createTopicSession(true, 0); TopicPublisher pub = sess.createPublisher(ActiveMQServerTestCase.topic1); TopicSubscriber sub = sess.createSubscriber(ActiveMQServerTestCase.topic1); pub.setDeliveryMode(DeliveryMode.PERSISTENT); Message m = sess.createTextMessage("testing123"); pub.publish(m); sess.commit(); // receive but rollback TextMessage m2 = (TextMessage) sub.receive(3000); ProxyAssertSupport.assertNotNull(m2); ProxyAssertSupport.assertEquals("testing123", m2.getText()); sess.rollback(); topicConn.close(); checkEmpty(ActiveMQServerTestCase.topic1); }