http://activemq.apache.org/advisory-message.html
ActiveMQ broker 内部维持了一些 topic,保存了一些系统信息,客户端可以订阅这些 topic 来获取信息,即 advisory message。
列举3个 topic 的例子:
1. topic名:ActiveMQ.Advisory.Connection
消息类型:客户端连接建立和断开的消息
获取方式:
AdvisorySupport.getConnectionAdvisoryTopic()
2. topic名:ActiveMQ.Advisory.Producer.Queue.XXX
消息类型:XXX队列当前有几个producer,以及producer删除的消息
获取方式:
AdvisorySupport.getProducerAdvisoryTopic(Destination destination)
3. topic名:ActiveMQ.Advisory.Queue,ActiveMQ.Advisory.Topic, ActiveMQ.Advisory.TempQueue, ActiveMQ.Advisory.TempTopic
消息类型:destination创建和销毁的消息
获取方式:
AdvisorySupport.getDestinationAdvisoryTopic(Destination destination)
示例代码:
public static void main(String[] args) throws JMSException { ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616"); // Create a Connection Connection connection = connectionFactory.createConnection(); connection.start(); ActiveMQSession session = (ActiveMQSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE); // Create the destination (Topic or Queue) Queue queue = session.createQueue("TEST.FOO"); // topic://ActiveMQ.Advisory.Producer.Queue.TEST.FOO ActiveMQTopic topic = AdvisorySupport.getProducerAdvisoryTopic(queue); MessageConsumer consumer = session.createConsumer(topic); consumer.setMessageListener(new MessageListener() { public void onMessage(Message msg) { if(msg instanceof ActiveMQMessage) { System.out.println(msg); } } }); }