跳至主要内容

AMQP 1.0 原型设计

·阅读时长:2 分钟
Michael Bridgen

我们一直在为一个新协议进行原型设计,这是我们的一贯做法。这个协议叫做“AMQP 1.0 R0”,它是 AMQP 工作组 (RabbitMQ,以及后来的 VMware 都是其成员) 的最新成果。 “R0” 表示它是推荐的第一个版本。该规范尚未完善:有很多待办事项,并且在很大程度上还没有经过验证。这两个事实是促使我们进行原型设计的其中一部分。

原型代码镜像在 github 上:https://github.com/rabbitmq/rabbitmq-amqp1.0。它与我们所有的插件一样构建 just the same

AMQP 1.0 R0 规范与以前版本的 AMQP 规范不同,因为它没有定义代理模型;也就是说,它没有定义交换、队列和绑定,或者其等效项。该协议实际上只是关于将消息从一个代理传输到另一个代理,然后就结果达成一致。这意味着它适合应用于消息代理实现,以及其他用途 - 想法是,人们可以调整现有模型以适应不同的需求。

在我们这里,现有的模型是 AMQP 0-9-1,它进行了一些泛化和扩展(例如,链式绑定)。因此,我们原型设计的目标是能够同时让 1.0 客户端和 0-9-1 客户端完成一些有用的工作。

好消息是,我们做到了。事实上,该插件可以设置为替换 Rabbit 通常的网络侦听器,并且能够与 AMQP 0-8、0-9-1 和 1.0 客户端顺利通信。我们确实在过程中进行了一些创新,并且规范中有一些部分我们并没有明显实现。这些将在 README 中详细说明。

我们进行的一项重要创新是在规范保持沉默的地方填充语义。其中一些在 this client-broker protocol 中详细说明,这是我们为 AMQP 工作组完成的项目。我们希望原型设计能够进一步完善这些方面。

下周,我将带着我们的原型参加 AMQP 1.0 "Connectathon",在那里它将与核心协议的其他实现进行测试(并非所有实现都是开源的)。同样,这将有助于消除规范中互操作性的障碍。

© 2024 RabbitMQ. All rights reserved.