【问题标题】:Which transport protocol does Open MQ use?Open MQ 使用哪种传输协议?
【发布时间】:2016-05-04 20:49:14
【问题描述】:

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

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

【问题讨论】:

    标签: jms protocols amqp mqtt openmq


    【解决方案1】:

    我认为你混淆了一些东西:MQTT 是一个应用程序级协议,使用 TCP 作为传输协议。 MQTT 也可以与 Websockets 一起用作传输。 MQTTJMSAMQP 的轻量级替代品。

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

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

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

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

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

    【讨论】:

    • Dominik,感谢您的出色回答。但是 Open MQ 不能通过 AMQP 运行 JMS 吗?您将 AMQP 称为 JMS 的“替代品”,但 JMS 只是一个 API。
    • 马丁,我澄清了有关“替代”部分的答案的某些部分。似乎 OpenMQ 使用 TCP 作为默认传输协议。那个恕我直言,文档不是很好。由于这是您最初的问题,很抱歉,我无法给出最终答案。希望其他人可以帮忙:)
    • Dominik,希望我能接受你的回答。让我告诉你,你对我帮助很大。但是,我一直在寻找权威来源的答案,所以我无法将您的回复作为我问题的答案。您似乎确实在 Java 消息传递方面知识渊博,我觉得关于 Java 消息传递如何真正工作的博客文章和教程非常缺乏。也许您可以在互联网上发布这样的文章?
    • JMS 只是一个 api,没有协议,所以 MQTT 不能替代 JMS。 JMS 也可以在 MQTT 之上使用。例如,Qpid 在 AMQP 之上使用 JMS。我已经进行了性能测试,并会推荐 RabbitMQ for Messaging。 OpenMQ ActiveMQ 和 Qpid 比 RabbitMQ 慢。
    • 我对Open MQ的底层有线协议也很感兴趣。不幸的是,这个答案没有帮助。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 2020-05-31
      • 2011-08-27
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 2013-10-01
      • 1970-01-01
      相关资源
      最近更新 更多