如何在activemq中设置队列监控
Posted
技术标签:
【中文标题】如何在activemq中设置队列监控【英文标题】:How to set up Monitoring for queue in activemq 【发布时间】:2011-12-27 07:13:32 【问题描述】:我在ActiveMQ页面中阅读,使用JMX我们可以监控activemq中的队列。如果队列有消息(深度高)或 ActiveMQ 中的服务间隔高,我们如何获得通知。在 unix 环境中不使用任何 shell 脚本。可以通过Java程序吗?如果是,请给我一些想法来完成这项工作。
【问题讨论】:
【参考方案1】:对于无 JMX 方法,您还可以使用由 activemq 控制台页面提供的 XML 提要。 XML 提要托管在 http://ip:port/admin/xml/queues.jsp
对于每个队列,这将具有与此类似的标签:
<queue name="your queue">
<stats size="0" consumerCount="1" enqueueCount="0" dequeueCount="0"/>
....
</queue>
只需在您的代码中解析此 XML 即可。
【讨论】:
【参考方案2】:您可以通过JMX API 使用 Java 定期轮询队列统计信息(请参阅this guide)
对于通知方法,您需要使用advisory messages 来监控传递到队列的消息(请参阅this guide)
【讨论】:
【参考方案3】:是的,这在 Java 中是可能的。
从 5.8 版开始嵌入 ActiveMQ jolokia 代理。因此,您可以使用 HTTP 请求获取 JMX 可以提取的所有统计信息,该请求会将您的统计信息返回为 JSON,然后您可以检查当前值并在值超出您决定的阈值时使用 SMTP 发出电子邮件警报。
假设您想使用 Jolokia 提取代理统计信息,在浏览器中点击以下 URL 输入 AMQ 控制台用户名和密码,默认为 admin http://servername.com:8161/api/jolokia/read/org.apache.activemq:type=Broker,brokerName=localhost
或者如果你不想经历所有这些麻烦,你可以使用我创建的现成 Python 脚本来监控 AMQ 堆、队列参数和代理可用性。你可以看看,它可以帮助你开发你的自定义脚本或程序
AMQMonitor and Alerting script
【讨论】:
以上是关于如何在activemq中设置队列监控的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 AJAX 在 ActiveMQ 中设置 TimeToLive 参数?
如何在 Spring Boot 中设置 ActiveMQ 端口?
如何在 MappingJackson2MessageConverter 中设置 typeIdPropertyName