开源工具免费且运行速度快,因此比闭源工具更受青睐。由于不对用户施加任何严格限制,开源应用程序如今已成为一种常态。
AMQP 标准是开源应用程序开发过程中常用的消息传递协议。在本文中,我们将阐明其重要性、实用性和关键术语。
什么是 AMQP 协议以及它如何工作?
AMQP 是指高级消息队列协议。
全球公认的标准,本质上作用于应用层,主要用于开发客户和经纪商之间无与伦比的通信操作性。
发布者负责生成消息,客户端负责收集和管理消息。
在整个过程中,代理(例如 RabbitMQ)的作用是确保消息(作为交换的一部分)直接从发布者发送到客户端。
说到其关键功能,路由、消息导向和排队是最重要的。使用 AMQP 可实现互操作性,具有不同的配置和基础架构。它允许开发人员将所有符合协议的客户端库和代理付诸实践。
AMQP 的历史
AMQP 由 John O' Hara 于 2003 年首次创建,自诞生以来已经经历了许多发展,历史悠久。John 创立 AMQP 时,他正在与摩根大通合作,该公司保留了 AMQP 的所有权利,并用它来与 iMatrix Corporation 签订合同。这两家公司都使用 AMQP 设计协议文档以及 C 代理。AMPQ 的使用一直持续到 2006 年中期。
然而,摩根大通决定让 AMQP 出名,并让其他公司也能使用。这就是为什么该公司在 2005 年中期努力组建 AMQP 用户组,其中包括思科、Red Hat、IONA Technologies 和 TWIST 等顶级 IT 巨头。
慢慢地,该集团规模扩大,目前拥有 23 家公司。新加入的成员包括巴克莱银行、IIT Software、美国银行、瑞士信贷、Progress Software 和 Informatica。
AMQP 1.0 于 2011 年 10 月发布,随后的 11 月 1 日,OASIS 技术委员会正式成立,其主要职责就是关注 AMQP 1.0 的进展。
根据工作委员会的反馈意见,第一稿、第二稿分别于2012年2月和2012年6月推出。
几个月后,即2012年10月底,AMQP成为授权的OASIS标准。
2014年,OASIS AMQP标准也得到了IEC和ISO等国际标准的认可。
AMQP 术语
在计划实施 AMQP 时,了解一些关键术语是必不可少的。在这篇文章中,我们解释了一些广泛使用的术语。
- Broker(或服务器)在 AMQP 协议启用中起着至关重要的作用。它负责建立连接,以确保客户端更好地路由和排队数据。
- 队列生成和消息确认的工作由消费者负责。
- 生产者负责重定向从交易所获取的数据并将其放置在队列中。
AMQP 的组件
除了上述 AMQP 术语之外,开发人员还必须了解用于 AMQP 模型部署的某些组件。
- 交易所(及其分类)
Exchange 负责获取消息并将其小心地放入正确的队列中。它的 4 个类别是:Fanout、Headers、Topic 和 Direct。进一步详细介绍一下,它是代理不可或缺的组件。
- 渠道
通道是指 AMQP 对等体之间的多路复用虚拟连接,它建立在现有连接内部。
- 消息队列
它是一个已识别的实体,有助于将消息与其资源或起源点链接起来。
- 绑定
绑定表示一组与队列和交换相关的预定义指令。它管理消息的发送和传递。
- 虚拟主机
vhost 是一个在代理内提供隔离功能的平台。根据用户及其访问权限,可以同时运行多个 vhost。
AMQP 交换如何工作?
AMQP 遵循的功能机制很简单;但是,只有在一切设置完毕且系统准备好进行通信后,它才可以进行通信。
交换机在消息交换中起着至关重要的作用,因为它们首先将消息传递给客户端,然后按照规则进行处理,并将前一阶段的输出定向到一个或多个队列。其使用的类型决定了将遵循哪种路由方法。
例如,在“直接”类型的情况下,新添加的数据包含最终消息目的地。或者,Fanout交换不使用任何信息路由方法。相反,它将同一条信息广播到所有连接的队列。
使用 AMQP 进行 API 开发
现在您已经充分了解了什么是 AMQP 以及它如何工作,让我们解释一下它如何帮助 API 开发。使用 AMQP,API 可以:
- 直接发送消息
- 将消息缓存在队列中以便基于触发器发送;
- 可以路由信息或者将交换机绑定到指定队列;
- 建立交易所之间的连接,以确保高效的沟通;
- 可以发送自动或手动确认。
您可以考虑一些可以在 API 中使用 AMQP 的场景,例如:
- 向数字钱包充值
- 零售店中的信用卡或借记卡交易
- 在信使或通讯系统中
让我们以第一个例子为例,现在对其进行详细说明:
- 向您的数字钱包(例如 Paytm)充值需要选择充值方式。它将启动创建服务。
- 现在到了身份验证步骤。如果详细信息被验证,下一个服务将提取资金并将其添加到钱包中。
- 为了让您的用户有机会在需要时阻止交易,您必须提供取消服务。
- AMQP 处理的消息交换是异步的。由于事务是关键事件,您不希望其中出现不一致,因此可以有一个额外的服务事件来跟踪每条消息的结果,以便下一个事件能够按时触发。
因此,您会发现,与 HTTP 相比,AMQP 的异步特性将导致需要回调。此外,使用此协议设计“获取”端点更为复杂。
总而言之,如果您能够很好地开发其 API 功能,AMQP 也可以与 HTTP 很好地配合使用。由于它很轻量,因此它将显著提高应用程序的性能。如果您无法忍受开发过程的复杂性,可以单独使用 HTTP,它就足以完成这项工作。
结语
AMQP 是一种专为消费者和发布者构建的未来消息协议。开源应用程序开发人员使用它来实现通信,而无需担心应用程序的底层技术和平台。本文详细介绍了 AMQP、其历史、组件及其工作原理。希望您现在对该协议有了更好的了解。