我在ActiveMQ页面上看到,使用JMX可以监控activemq中的队列。如何在不使用unix环境下的任何shell脚本的情况下,通过Java程序获取通知,以检测队列是否有消息(深度较大)或服务间隔时间是否过长。如果可以,请给我一些完成此操作的想法。
我在ActiveMQ页面上看到,使用JMX可以监控activemq中的队列。如何在不使用unix环境下的任何shell脚本的情况下,通过Java程序获取通知,以检测队列是否有消息(深度较大)或服务间隔时间是否过长。如果可以,请给我一些完成此操作的想法。
如果不使用JMX,您还可以使用由activemq控制台页面提供的XML feed。 XML feed托管在http://ip:port/admin/xml/queues.jsp
每个队列都会有类似于这样的标签:
<queue name="your queue">
<stats size="0" consumerCount="1" enqueueCount="0" dequeueCount="0"/>
....
</queue>
只需在您的代码中解析此XML,就可以开始了。
是的,Java可以实现。
从ActiveMQ版本5.8开始,jolokia代理程序被嵌入其中。因此,您可以使用HTTP请求获取JMX可以提取的所有统计信息,该请求将返回JSON格式的统计信息,然后您可以检查当前值并在超出您决定的阈值时使用SMTP引发电子邮件警报。
假设您想使用Jolokia提取Broker统计信息,请在浏览器中输入以下URL,并输入AMQ控制台用户名和密码(默认为admin): http://servername.com:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost
或者,如果您不想经历这一切麻烦,您可以使用我创建的现成Python脚本来监视AMQ Heap、Queue参数和Broker可用性。您可以看一下,它可能会帮助您开发自定义脚本或程序。