我的 ActiveMQ 消息实例(Amazon MQ 上的 ActiveMQ 5.16.2)使用 STOMP。我cannot use JMS QueueBrowser,并且无法“取消确认”消息。一旦有消费者从队列中提取该消息,即标记为“未使用”,如文档 here 中所述。 .
假设代理无法更改,我正在查看 JMS here 的 REST API 映射,但我没有看到任何模仿 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。
最佳答案
REST/JMS mapping不提供任何消息浏览功能。
但是,值得注意的是,REST/JMS 映射独立于 Jolokia 公开的管理功能。 Jolokia 是一个 HTTP-JMX 桥接器,因此通过 JMX 公开的任何内容都可以通过 HTTP 访问(例如使用 curl
)。 DestinationViewMBean
有各种您可以使用的“浏览”方法,例如:
$ 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\(\)
其中 TEST
是队列的名称。
您可以使用search
命令获取JMX对象列表,例如:
$ curl -XGET -u admin:admin -H "Origin: http://localhost" http://localhost:8161/api/jolokia/search/org.apache.activemq:*
您可以阅读有关 Jolokia Protocol on their website 的更多信息.
关于activemq - 用于 ActiveMQ 上的 STOMP 的 JMS 队列浏览器的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71383792/