RabbitMQ 支持哪些协议?
RabbitMQ 支持多种消息协议,直接支持和通过插件支持。本页介绍支持的协议,并帮助区分它们。
AMQP 0-9-1
RabbitMQ 最初是为了支持 AMQP 0-9-1 而开发的。因此,该协议一直是代理支持的第一个“核心”协议。我们已经扩展了 AMQP 0-9-1 的功能。
AMQP 0-9-1 是一种二进制协议,定义了相当强烈的消息语义。对于客户端来说,它是一个相当容易实现的协议,因此有大量客户端库可用于多种编程语言和环境。
RabbitMQ 教程适用于 AMQP 0-9-1。
AMQP 1.0
AMQP 1.0 是一种更现代的协议。它是ISO/IEC 19464 和OASIS 标准。
尽管名称如此,但 AMQP 1.0 与 AMQP 0-9-1 / 0-9 / 0-8 非常不同,在网络级别没有任何共享。AMQP 1.0 对语义要求更少,因此得到更多消息代理的支持。该协议比 AMQP 0-9-1 更复杂,客户端实现更少。
AMQP 1.0 已成为 RabbitMQ 4.0 中的“核心”协议。.
RabbitMQ Streams
RabbitMQ Streams 协议允许以非常高的吞吐量与流通信。RabbitMQ 通过插件本地支持流协议。
RabbitMQ 教程适用于 RabbitMQ Streams 协议。
MQTT
MQTT 是一种二进制协议,强调轻量级发布/订阅消息,面向受限设备中的客户端。它为发布/订阅定义了明确的消息语义,但不适用于其他消息习惯用法。
RabbitMQ 通过插件本地支持 MQTT 版本 3.1、3.1.1 和 5.0本地。
STOMP
STOMP 是一种基于文本的消息协议,强调(协议)简单性。它对消息语义的定义很少,但易于实现,并且很容易部分实现(它是唯一可以通过 telnet 手动使用的协议)。
RabbitMQ 通过插件支持 STOMP(所有当前版本),通过在内部代理到 AMQP 0-9-1 上实现。
HTTP 和 WebSockets
虽然 HTTP 不是真正的消息协议,但 RabbitMQ 可以通过三种方式通过 HTTP 传输消息。
- Web STOMP 插件支持使用 WebSockets 向浏览器发送 STOMP 消息。
- Web MQTT 插件支持使用 WebSockets 向浏览器发送 MQTT 消息。
- 管理插件支持简单的 HTTP API 来发送和接收消息。这主要是用于诊断目的,但可以用于没有可靠交付的低容量消息传递。