当 ActiveMQ 中有新消息时,我们可以使用 HttpClient (SocketsHttpHandler) 像 TCP/IP 那样自动获得通知吗?

Can we use HttpClient (SocketsHttpHandler) to get notified automatically like in case of TCP/IP when there is a new message in ActiveMQ?

我正在开发一个 HTTP/HTTPS 侦听器,它基本上侦听 ActiveMQ REST 端点以获取最新消息。如果我们使用像 Apache.NMS 这样的 C# 库,那么它会使用 TCP/IP 来获取有关 ActiveMQ 中新消息的通知。在使用 ActiveMQ REST 端点时,我需要相同的 notification/callback 行为。

有人知道如何使用某些 HTTP 侦听器不断侦听 ActiveMQ REST 端点并获得有关新消息的通知吗?我不想使用轮询(例如,每 5-10 秒调用 ActiveMQ REST API)。

ActiveMQ 5.x REST 接口不支持任何类型的回调,因此您唯一的选择是轮询。 NMS 客户端收到有关消息的“通知”的原因是消息的编写方式。它创建并保持与代理的连接,代理可以通过该连接向它发送消息。 HTTP 不适合这项任务。

一般来说,由于缺少回调功能,REST 并不是一个很好的消息传递解决方案。我建议使用像 STOMP 这样简单且无处不在的东西。此外,没有用于 REST 消息传递的标准。如果您编写应用程序以使用 ActiveMQ 5.x 的 REST 接口,那么您的应用程序将绑定到 ActiveMQ 5.x。它不适用于任何其他经纪人。但是,很多经纪商都支持 STOMP。