import javax.jms.*; import javax.naming.*; public class WeasleyQuidditchTopicSubscriber implements MessageListener { TopicConnection topicConnection = null; boolean subscriptionOn; public static void main(String[] args) { WeasleyQuidditchTopicSubscriber wqts = new WeasleyQuidditchTopicSubscriber(); try { while (wqts.subscriptionOn) {Thread.sleep(500);} //onMessage() waits for message here } catch (java.lang.InterruptedException intExc) {} try { wqts.topicConnection.close(); } catch (javax.jms.JMSException jmsEx) { System.out.println("JMS Exception: " + jmsEx.toString()); } System.out.println(" Weasley quidditch subscriber closed"); } public WeasleyQuidditchTopicSubscriber() { TopicConnectionFactory topicConnectionFactory = null; Topic quidditchTopic = null; this.subscriptionOn = true; try { Context jndiContext = new InitialContext(); topicConnectionFactory = (TopicConnectionFactory) jndiContext.lookup("TopicConnectionFactory"); quidditchTopic = (Topic) jndiContext.lookup("QuidditchTopic"); } catch (NamingException nameEx) { System.out.println("Naming Exception: " + nameEx.toString()); } try { topicConnection = topicConnectionFactory.createTopicConnection(); TopicSession topicSession = topicConnection.createTopicSession( false, Session.AUTO_ACKNOWLEDGE); TopicSubscriber topicSubscriber = topicSession.createSubscriber(quidditchTopic); topicSubscriber.setMessageListener(this); //will use the onMessage() method below topicConnection.start(); } catch (javax.jms.JMSException jmsEx) { System.out.println("JMS Exception: " + jmsEx.toString()); } } public void onMessage(Message message) { try { TextMessage textMessage = (TextMessage)message; System.out.println(" receiving line " + " : " + textMessage.getText()); if (textMessage.getText().equals("end of message")) { this.subscriptionOn = false; } } catch (javax.jms.JMSException jmsEx) { System.out.println("JMS Exception in onMessage: " + jmsEx.toString()); } } }