如何解决当队列中的消息数> 100时,需要Artemis通知
我们已经安装了Apache ActiveMQ Artemis。一项新要求要求 仅在队列中的消息数大于100时,我们才需要Artemis通知。 我已经看到了通知消息,但是它们全都在进行操作(例如队列创建,删除,违反安全性等),但是没有任何条件。 我该如何实现?
解决方法
ActiveMQ Artemis本身没有什么可以在队列的消息数超过配置的大小时直接发送通知。
通常,在这种情况下,您将有一个外部工具来监视代理并根据您关心的任何指标和阈值发送通知。
例如,您可以配置Prometheus metrics plugin以暴露来自代理的指标,然后使用Prometheus alerting,或者可以更进一步并与Grafana集成并使用其{{3 }}。
如果您想要一个更简单的解决方案,则只需编写Java应用程序或脚本即可通过JMX或HTTP轮询代理,然后根据需要发送警报。您可以在代理的examples/features/standard/jmx
目录中找到一个使用JMX进行管理操作的Java示例应用程序。如果要使用HTTP,则可以使用curl
之类的命令来调用代理MBean上的管理方法。您只需要向其提供MBean的“对象名称”。代理上的队列的“对象名称”遵循以下模式:
org.apache.activemq.artemis:broker="<brokerName>",component=addresses,address="<addressName>",subcomponent=queues,routing-type="<routingType>",queue="<queueName>"
当然,您需要使用适合您的配置的值替换<brokerName>
,<addressName>
,<routingType>
和<queueName>
。
这是一个简单的示例,它读取队列MessageCount
的{{1}}属性:
foo
请注意,curl -k --user admin:admin -H "Origin: http://localhost:8161" "http://localhost:8161/console/jolokia/read/org.apache.activemq.artemis:broker=%220.0.0.0%22,address=%22foo%22,routing-type=%22anycast%22,queue=%22foo%22/MessageCount"
字符已通过"
进行转义,以允许在shell中正确执行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。