跳到主要内容

AMQP 1.0 原型设计

·2 分钟阅读
Michael Bridgen

我们一直在为一项新协议制作原型,这是我们一贯的做法。这个协议被称为 "AMQP 1.0 R0",是 AMQP 工作组(RabbitMQ 以及后来的 VMware 都是其成员)的新版本。"R0" 表示这是建议的第一个修订版。该规范尚不完整:有很多待办事项,并且在很大程度上未经证实。这两个事实是促使我们进行原型设计的部分原因。

原型代码镜像在 github 上:http://github.com/rabbitmq/rabbitmq-amqp1.0。它的构建方式与我们所有的插件完全相同

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

在我们的案例中,现有的模型是 AMQP 0-9-1,带有一些泛化和扩展(例如,链式绑定)。因此,我们原型的目标是能够让 1.0 客户端和 0-9-1 客户端同时连接时都能完成一些有用的工作。

嗯,好消息是,我们已经实现了这一点。事实上,该插件可以设置为替换 Rabbit 的常用网络监听器,并且可以愉快地与 AMQP 0-8、0-9-1 和 1.0 客户端对话。我们确实不得不在这个过程中进行一些发明,并且我们明显没有实现规范的某些部分。这些将在 README 中详细说明。

其中一个重要的发明是填补规范沉默的语义。其中一些在 这个客户端-代理协议工作中详细说明,这是我们为 AMQP 工作组所做的工作。我们希望原型设计将有助于进一步充实这一点。

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

© . All rights reserved.