跳至主要内容
版本:3.13

RabbitMQ 支持哪些协议?

RabbitMQ 支持多种消息协议,直接或通过插件使用。本页介绍了支持的协议,并帮助区分它们。

AMQP 0-9-1 及扩展

RabbitMQ 最初是为 支持 AMQP 0-9-1 而开发的。因此,该协议是经纪人支持的“核心”协议。所有这些变体彼此之间都非常相似,较新的版本整理了早期版本中不清楚或无用的部分。我们已经对 AMQP 0-9-1 进行了 扩展

AMQP 0-9-1 是一种二进制协议,并定义了相当严格的消息传递语义。对于客户端来说,这是一个相当容易实现的协议,因此,对于许多不同的编程语言和环境,有 大量的客户端库 可用。

AMQP 0-9-1 是 RabbitMQ 教程 中使用的协议。

STOMP

STOMP 是一种基于文本的消息传递协议,它强调(协议)简单性。它在消息传递语义方面定义很少,但易于实现,并且非常容易部分实现(它是唯一可以通过 telnet 手动使用的协议)。

RabbitMQ 通过 插件 支持 STOMP(所有当前版本)。

MQTT

MQTT 是一种二进制协议,它强调轻量级发布/订阅消息传递,面向受限设备中的客户端。它对发布/订阅有明确定义的消息传递语义,但对于其他消息传递习惯用法则没有。

RabbitMQ 通过 插件 支持 MQTT 版本 3.1、3.1.1 和 5.0。

AMQP 1.0

尽管名称如此,但 AMQP 1.0 与 AMQP 0-9-1 / 0-9 / 0-8 是完全不同的协议,在网络级别几乎没有任何共享。AMQP 1.0 对语义要求的限制要少得多;因此,更容易在现有经纪人中添加对 AMQP 1.0 的支持。该协议比 AMQP 0-9-1 复杂得多,并且客户端实现更少。

RabbitMQ 通过 插件 支持 AMQP 1.0。

HTTP 和 WebSockets

虽然 HTTP 并不是真正的消息传递协议,但 RabbitMQ 可以通过三种方式通过 HTTP 传输消息

  • Web STOMP 插件 支持使用 WebSockets 向浏览器发送 STOMP 消息。
  • Web MQTT 插件 支持使用 WebSockets 向浏览器发送 MQTT 消息。
  • 管理插件 支持一个简单的 HTTP API 来发送和接收消息。这主要用于诊断目的,但可以用于低容量消息传递,无需 可靠传递

RabbitMQ 流

RabbitMQ 流协议 允许与 通信。RabbitMQ 通过 插件 支持流协议。