搜索
您的当前位置:首页正文

Activemq信息查看

来源:尚佳旅游分享网


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

还可以使用通配符,针对每个队列都会收到一条消息。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top