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);
            }
        }
    });
             
}

 

posted on 2018-03-27 18:10  偶尔发呆  阅读(1305)  评论(0)    收藏  举报