/* The contents of this file are subject to the license and copyright terms * detailed in the license directory at the root of the source tree (also * available online at http://fedora-commons.org/license/). */ package fedora.server.messaging; import java.util.Properties; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageListener; import javax.jms.TextMessage; import javax.naming.Context; /** * Test class for listening to a JMS topic. * * @author Edwin Shin * @version $Id$ */ public class Listener implements MessageListener { private final JMSManager jmsMgr; /** * Create a Listener object for the specified JMS topic. * * @param topicName the JMS topic to listen to, e.g. "fedora.apim.update" * @param jndiProps Properties file that contains, at a minimum, values for * Context.INITIAL_CONTEXT_FACTORY and Context.PROVIDER_URL * @throws Exception */ public Listener(String topicName, Properties jndiProps) throws Exception { jmsMgr = new JMSManager(jndiProps); System.out.println("*** Listening for messages on topic: " + topicName); jmsMgr.listen(topicName, this); } public void onMessage(Message message) { try { TextMessage textMessage = (TextMessage) message; String text = textMessage.getText(); System.out.println(text); } catch (JMSException e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { if (args.length < 1) { System.out.println("Usage: " + Listener.class.getName() + " jmsTopicName [providerURL]"); System.out.println("\te.g. " + Class.class.getName() + " fedora.apim.update tcp://localhost:61616"); } String topic = args[0]; Properties jndiProps = null; if (args.length == 2) { jndiProps = new Properties(); jndiProps .setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.activemq.jndi.ActiveMQInitialContextFactory"); jndiProps.setProperty(Context.PROVIDER_URL, args[1]); // e.g. tcp://localhost:61616 jndiProps.setProperty("topic." + topic, topic); } new Listener(topic, jndiProps); } }