6

我听 IBM 的一个人谈论MQTT,他说 MQTT 是迄今为止最轻量级的消息传递协议。他的论点是单个消息产生的最小开销是 2 个字节。但是,我也听说过关于 HTML5 WebSockets 的相同(2 字节开销)?无论如何,因为我计划使用Open MQ作为消息传递应用程序的 JMS 提供程序,所以我的提供程序使用的协议引起了我的兴趣。我在任何地方都找不到该问题的答案,我什至搜索了 Open MQ 文档和使用 Open MQ 作为 JMS 提供程序的 GlassFish 文档。Internet 上的一些博客文章等说AMQP,但我找不到可靠的参考来支持该声明。

Open MQ 使用哪种协议,您怎么知道?

4

2 回答 2

7

我认为您将一些事情混为一谈:MQTT是一种应用程序级协议,并使用 TCP 作为传输协议。MQTT也可以与 Websockets 一起用作传输。如果您愿意,MQTT是JMSAMQP的轻量级替代品。

AMQP是一种流行且可靠的JMS替代方案,非常适合业务和任务关键型消息传递。它功能非常丰富,应用广泛。请注意,AMQP是一种消息传递协议,而JMS是一种 API(甚至可以使用AMQP作为传输)。您可以在带有库(例如RabbitMQ Java Client )的 Java 应用程序中直接使用AMQP

另一方面,MQTT非常适合遥测数据和场景,其中您有许多客户端与单个消息代理进行通信,并且客户端的低带宽使用、内存效率和电池寿命是关键。

JMS没有定义任何传输协议(与 MQTT 相比),任何东西都可以在这里使用。我个人认为 TCP 也很适合这里。

我不知道 OpenMQ 但对于 JMS 和 AMQP 我可以推荐ActiveMQ。对于 MQTT,有一些代理,包括HiveMQMosquitto

强制性免责声明:我是 HiveMQ 的开发人员,所以我可能有点偏见 ;-)

于 2013-06-07T11:34:54.907 回答
0

我认为 OpenMQ 使用 STOMP 作为应用程序级协议。除了 STOMP 协议之外,没有其他文档支持 OpenMQ 协议。

编辑:找到了 UMS 协议,OpenMQ 似乎默认使用它。https://mq.java.net/4.3-content/ums/umsIntro.html

OpenMQ 无法使用 AMQP,所以我会推荐 RabbitMQ。

于 2015-12-01T17:19:50.030 回答