首页 > 解决方案 > 当 ActiveMQ 中有新消息时,我们可以使用 HttpClient (SocketsHttpHandler) 像 TCP/IP 一样自动获得通知吗?

问题描述

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

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

标签: c#.net-coreactivemqhttplistener

解决方案


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

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


推荐阅读