用于 ActiveMQ 上的 STOMP 的 JMS 队列浏览器的替代方案?

2024-06-21

我的 ActiveMQ 消息实例(ActiveMQ 5.16.2亚马逊MQ https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/amazon-mq-release-notes.html)使用STOMP。我不能用 https://stackoverflow.com/questions/71050378/java-activemq-stomp-ssh-illegal-reflective-access-operation-to-method-sun-sJMS QueueBrowser,并且无法“取消确认”消息。一旦有消费者从队列中提取该消息,即标记为“未使用”,如文档中所述here https://activemq.apache.org/how-do-i-unack-the-message-with-stomp.

假设代理无法更改,我正在查看 JMS 的 REST API 映射here https://activemq.apache.org/rest,但我没有看到任何模仿 ActiveMQ 管理页面 (JSP) 的端点,它们能够浏览队列、使用者和消息内容,而无需主动从队列中“拉取”这些消息。

那么,如何以编程方式(例如通过 REST api)实现我们在 ActiveMQ 管理页面中看到的 JMS 逻辑?

查看 REST API 的文档,假设已经登录,这种方法有效

curl -XGET https://user:pass@server:8162/admin/browse.jsp?JMSDestination=ActiveMQ.DLQ

它抓取 Web 控制台上的 JSP 页面输出,所以我认为它可以通过一些“官方”rest API 来完成。

笔记。 ActiveMQ JSP 页面未使用任何 AJAX 调用,因此我假设它直接使用 JMS Java API。


The REST/JMS 映射 https://activemq.apache.org/rest不提供任何消息浏览功能。

然而,值得注意的是,REST/JMS 映射独立于 Jolokia 公开的管理功能。 Jolokia 是一个 HTTP-JMX 桥,因此通过 JMX 公开的任何内容都可以通过 HTTP 访问(例如使用curl). The DestinationViewMBean https://github.com/apache/activemq/blob/db15128b8bf3cf0eab503bc91f7e21f2c6976252/activemq-broker/src/main/java/org/apache/activemq/broker/jmx/DestinationViewMBean.java#L155您可以使用各种“浏览”方法,例如:

$ curl -XGET -u admin:admin -H "Origin: http://localhost" http://localhost:8161/api/jolokia/exec/org.apache.activemq:type=Broker,brokerName=localhost,destinationType=Queue,destinationName=TEST/browse\(\)

Where TEST是您的队列的名称。

您可以使用以下命令获取 JMX 对象的列表search命令,例如:

$ curl -XGET -u admin:admin -H "Origin: http://localhost" http://localhost:8161/api/jolokia/search/org.apache.activemq:*

您可以阅读更多有关Jolokia 协议在其网站上 https://jolokia.org/reference/html/protocol.html.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于 ActiveMQ 上的 STOMP 的 JMS 队列浏览器的替代方案? 的相关文章

随机推荐