package org.apache.activemq.recipes; import java.util.concurrent.TimeUnit; import javax.jms.Connection; import javax.jms.Destination; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageConsumer; import javax.jms.MessageListener; import javax.jms.Session; import org.apache.activemq.ActiveMQConnectionFactory; import org.apache.activemq.advisory.AdvisorySupport; public class AdvisoryConsumerApp implements MessageListener { private final String connectionUri = "tcp://localhost:61616"; private ActiveMQConnectionFactory connectionFactory; private Connection connection; private Session session; private Destination destination; private MessageConsumer advisoryConsumer; private Destination monitored; public void before() throws Exception { connectionFactory = new ActiveMQConnectionFactory(connectionUri); connection = connectionFactory.createConnection(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); monitored = session.createQueue("MyQueue"); destination = session.createTopic( AdvisorySupport.getConsumerAdvisoryTopic(monitored).getPhysicalName() + "," + AdvisorySupport.getProducerAdvisoryTopic(monitored).getPhysicalName()); advisoryConsumer = session.createConsumer(destination); advisoryConsumer.setMessageListener(this); connection.start(); } public void after() throws Exception { if (connection != null) { connection.close(); } } public void onMessage(Message message) { try { Destination source = message.getJMSDestination(); if (source.equals(AdvisorySupport.getConsumerAdvisoryTopic(monitored))) { int consumerCount = message.getIntProperty("consumerCount"); System.out.println("New Consumer Advisory, Consumer Count: " + consumerCount); } else if (source.equals(AdvisorySupport.getProducerAdvisoryTopic(monitored))) { int producerCount = message.getIntProperty("producerCount"); System.out.println("New Producer Advisory, Producer Count: " + producerCount); } } catch (JMSException e) { } } public void run() throws Exception { TimeUnit.MINUTES.sleep(10); } public static void main(String[] args) { AdvisoryConsumerApp example = new AdvisoryConsumerApp(); System.out.print("\n\n\n"); System.out.println("Starting Advisory Consumer example now..."); try { example.before(); example.run(); example.after(); } catch (Exception e) { System.out.println("Caught an exception during the example: " + e.getMessage()); } System.out.println("Finished running the Advisory Consumer example."); System.out.print("\n\n\n"); } }