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

标签 activemq stomp

我的 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/

相关文章:

java - 如何在 Spring WebSocketStompClient 中获取 Session Id?

java - spring 配置嵌入式 BrokerService

java - 应该使用相同的 Java keystore 进行 SSL 和 HTTPS 通信吗?

java - 事务未准备好 (ActiveMQ), "the XA resource has become unavailable"(Atomikos),日志中无休止的异常

spring - 如何在spring websockets中找到所有订阅主题的用户

rabbitmq - Dart 和 RabbitMQ 绑定(bind)交换

http - 为什么 HTTP 不是消息传递协议(protocol)? (根据 RabbitMQ)

python - 使用选择器的订阅不适用于 python - stomp.py

java - 使用 SpringJMS 设置每条消息的过期时间

java - 无法使用 JNDI 连接到 Websphere MQ