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 。
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传输消息:
- 该网站STOMP插件支持STOMP消息使用WebSockets的浏览器。
- 该网站MQTT插件支持MQTT消息使用WebSockets的浏览器。
- 该管理插件支持简单的HTTP API发送和接收消息。这主要用于诊断目的,但可用于低容量消息传递而没有可靠的传递。
获取帮助并提供反馈
如果您对本指南的内容或与RabbitMQ有关的任何其他主题有疑问,请随时在RabbitMQ邮件列表中询问。
帮助我们改善文档<3
如果您想对该网站做出贡献,可以在GitHub上找到其来源。只需分叉存储库并提交拉取请求。谢谢!