问题描述
我正在使用HTTP / HTTPS侦听器,该侦听器基本上侦听ActiveMQ REST端点以获取最新消息。如果我们使用像Apache.NMS这样的C#库,那么它将使用TCP / IP来获得有关ActiveMQ中新消息的通知。使用ActiveMQ REST端点时,我需要相同的通知/回调行为。
有人对如何通过一些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。