ActiveMQ学习笔记之十一--监控Broker(ActiveMQ的Advisory message)
通知消息(Advisory Message)
简单的说就是实现了ActiveMQ的broker上各种操作的记录跟踪和通知。
使用这个功能,你可以实时的知道broker上
这个机制是ActiveMQ对JMS协议的重要补充,也是基于JMS实现的ActiveMQ的可管理性的一部分。多个ActiveMQ的相互协调和互操作的基础设置。
分类
Advisory
说明
DataStruct类型
客户端连接
相关
ActiveMQ.Advisory.Connection
客户端连接、或终止时[Connection.start()、
或者stop()方法被调用]
ConnectionInfo
RemoveInfo
?
ActiveMQ.Advisory.Producer.Queue
当生产者被创建、或终止时
[session.createProducer()、或者
session.close()方法被调用]
ProducerInfo
RemoveInfo
?
ActiveMQ.Advisory.Producer.Topic
?
ActiveMQ.Advisory.Consumer.Queue
当消费者被创建、或终止时
[session.createConsumer()、或者
session.close()方法被调用]
?
ActiveMQ.Advisory.Consumer.Topic
队列相关
ActiveMQ.Advisory.Topic
任何Topic被创建或者销毁时
DestinationInfo
?
ActiveMQ.Advisory.Queue
消息相关
[需要手工开启]
ActiveMQ.Advisory.MessageConsumed.Queue
当消息被成功消费时[消息应答成功]
ActiveMQMessage
?
ActiveMQ.Advisory.MessageConsumed.Topic
?
????public?static?void?testAdvisory4()?throws?Exception {
???????ConnectionFactory factory =?new?ActiveMQConnectionFactory("tcp://localhost:61616");
???????Connection connection = factory.createConnection();
???????connection.start();
?
???????final?Session session = connection.createSession(false/*支持事务*/, Session.AUTO_ACKNOWLEDGE);
???????Destination queue = AdvisorySupport.getMessageConsumedAdvisoryTopic(session.createQueue("test_123"));
???????MessageConsumer consumer = session.createConsumer(queue);
???????consumer.setMessageListener(new?MessageListener() {
?
???????????@Override
???????????public?void?onMessage(Message message) {
??????????????System.out.println(message);
??????????????ActiveMQMessage consumedMessage = (ActiveMQMessage) ((ActiveMQMessage) message).getDataStructure();
??????????????System.out.println("队列:["?+ consumedMessage.getDestination() +?"],消息:[id="
?????????????????????+ consumedMessage.getMessageId() +?"]被成功接收。");
???????????}
???????});
????}