如果ActiveMQ中有新消息,我们是否可以使用HttpClientSocketsHttpHandler像TCP / IP一样自动获得通知?

问题描述

我正在使用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。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...