RabbitMQ与AMQP

AMQP是什么

AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个开放标准的应用层协议,用于在分布式系统中实现消息中间件通信。它定义了消息的格式、传输规则以及消息代理(Broker)的行为,确保不同厂商的消息系统可以互操作。

AMQP 与 RabbitMQ 的关系

● RabbitMQ 是一个开源的消息代理软件,实现了 AMQP 0.9.1 协议,并扩展支持其他协议(如 MQTT、STOMP)。
● RabbitMQ 是最早广泛支持 AMQP 的消息队列系统之一,因此常被视为 AMQP 的参考实现。
● 虽然 RabbitMQ 3.x 基于 AMQP 0.9.1,4.x全面支持 AMQP 1.0(但非默认)。

AMQP 0.9 与 1.0 的主要变化

AMQP 1.0 是 OASIS 标准化的版本,与 0.9.1 有显著差异,几乎不兼容:

image-20210701-8

关键区别示例:

  1. Exchange/Queue 模型:
    ○ AMQP 0.9.1 要求消息必须通过 Exchange 路由到 Queue。
    ○ AMQP 1.0 取消了这一限制,消息可以直接发送到任意端点(Node)。
  2. 协议兼容性:
    ○ RabbitMQ 默认支持 0.9.1,需通过插件启用 1.0。
    ○ ActiveMQ Artemis 等代理原生支持 AMQP 1.0。

    总结

    ● AMQP 0.9.1 更贴近传统消息队列(如 RabbitMQ 的实现),适合需要复杂路由的场景。
    ● AMQP 1.0 更通用,适合跨平台、跨协议集成,但失去了部分 0.9.1 的高级特性(如内置 Exchange 类型)。