Activemq信息查看
查询 ActiveMQ 统计信息
博客分类: jms
ActiveMQApache
ActiveMQ 支持代理插件 ,通过代理插件可以扩展 ActiveMQ 的功能。ActiveMQ 5.3 中新添加了一个统计插件,通过它可以查看 activemq 的运行情况,或者查询队列或主题的运行情况。在 activemq 的配置文件中添加以下配置就可以使用统计插件。
统计插件会监听发送到特定目的上的信息。如果想查询 activemq 的运行状态,只要向名为 ActiveMQ.Statistics.Broker 的目的地发送一条空消息,并设置一下消息的 replyTo 属性,当 activemq 收到这样一条消息的时候,就会发送一条 MapMessage 消息到 replyTo 属性指定的目的上,如下代码所示:
Queue replyTo = session.createTemporaryQueue();
MessageConsumer consumer = session.createConsumer(replyTo);
Queue query = session.createQueue(\"ActiveMQ.Statistics.Broker\");
MessageProducer producer = session.createProducer(query);
Message msg = session.createMessage();
msg.setJMSReplyTo(replyTo);
producer.send(msg);
MapMessage reply = (MapMessage) consumer.receive();
for (Enumeration e = reply.getMapNames();e.hasMoreElements();) {
String name = e.nextElement().toString();
System.err.println (name+\"=\"+reply.getObject(name));
}
运行下面的代码会看到如下的输出:
vm=vm://localhost
memoryUsage=0
storeUsage=3330
tempPercentUsage=0
ssl=
openwire=tcp://localhost:50059
brokerId=ID:bigmac-50057-1253605065511-0:0
consumerCount=2
brokerName=localhost
expiredCount=0
dispatchCount=1
maxEnqueueTime=5.0
storePercentUsage=0
dequeueCount=0
inflightCount=1
messagesCached=0
tempLimit=107374182400
averageEnqueueTime=5.0
stomp+ssl=
memoryPercentUsage=0
size=10
tempUsage=0
producerCount=1
minEnqueueTime=5.0
dataDirectory=/Users/rajdavies/dev/projects/activemq/activemq-core/activemq-data
enqueueCount=10
stomp=
storeLimit=107374182400
memoryLimit=67108864
同样,也可以查询某个队列或主题的使用情况,方法是一样的,只要修改一下发送目
的就可以了。 ActiveMQ.Statistics.Broker 目的是用于查询整个 activemq 的运行情况,查询队列或主题的运行情况的发送目的为 ActiveMQ.Statistics.Destination 加上希望查询的队列或主题名。例如,希望查询名为 test.query 的队列的运行情况,发送目的即为 ActiveMQ.Statistics.Destinationtest.query 。
Queue replyTo = session.createTemporaryQueue();
MessageConsumer consumer = session.createConsumer(replyTo);
Queue testQueue = session.createQueue(\"Test.Queue\");
MessageProducer producer = session.createProducer(null);
Queue query = session.createQueue(\" ActiveMQ.Statistics.Destination\" testQueue.getQueueName());
Message msg = session.createMessage();
producer.send(testQueue,msg)
msg.setJMSReplyTo(replyTo);
producer.send(query,msg);
MapMessage reply = (MapMessage) consumer.receive();
+
assertNotNull(reply);
assertTrue(reply.getMapNames().hasMoreElements());
for (Enumeration e = reply.getMapNames();e.hasMoreElements();) {
String name = e.nextElement().toString();
System.err.println(name+\"=\"+reply.getObject(name));
}
运行上面的代码会看到如下输出:
memoryUsage=0
dequeueCount=0 ///////
inflightCount=0
messagesCached=0
averageEnqueueTime=0.0
destinationName=queue://Test.Queue ///////////
size=1 //////////
memoryPercentUsage=0
producerCount=0 ////////
consumerCount=0 ///////
minEnqueueTime=0.0
maxEnqueueTime=0.0
dispatchCount=0
expiredCount=0
enqueueCount=1 ///////
memoryLimit=67108864
还可以使用通配符,针对每个队列都会收到一条消息。
因篇幅问题不能全部显示,请点此查看更多更全内容