RabbitMQ学习(七):AMQP 0-9-1 协议之简单概述

说明

通过之前翻译的六篇官方教程,我们已经学会了如何使用RabbitMQ。我们都知道RabbitMQ是一个支持多种协议的消息队列,本篇博文将翻译官方对于AMQP 0-9-1协议的介绍:AMQP 0-9-1 Model Explained。 通过翻译记录该协议的内容,加深对RabbitMQ消息队列的理解。

正文

什么是AMQP 0-9-1协议?

在阅读RabbitMQ提供的该协议介绍前,我们可以在网上查找该协议有关信息。在其官网上我们可以看到 :AMQP is the Internet Protocol for Business Messaing. To become the standard protocol for interoperability between all messaging middleware. 可以看出AMQP是消息传输的一种规范,一个标准协议

AMQP 0-9-1 (Advanced Message Queuing Protocol 高级消息队列协议)是一种消息传输协议,它使得符合标准的客户端程序可以与符合标准的中间件代理进行通信。

代理及其作用

消息传输代理接收来自发送者(发送消息的程序,也称为生产者)的消息,然后把消息路由到消费者(处理消息的程序)。

因为这是一个网络协议,发送者,消费者及中间件可以部署在不同的机器上。

简单概括AMQP 0-9-1 模型

AMQP 0-9-1 模型可以简单地描述为:消息被发送到通常被比作邮局或是邮箱的交换机,交换机根据被称为 绑定 的规则将消息副本路由到队列。然后消息中间件将消息传递到已经订阅队列的消费者,或者是消费者根据需求从队列拉取消息。
在这里插入图片描述
当发送一个消息时,发送者可能会给消息设置多个属性(称为消息元数据),这个中间件可能会使用部分元数据,但是其余的元数据对中间件来说都是不可见的,它们只能被接收消息的应用程序使用。

网络不是完全可靠的,并且应用程序在处理消息时也有可能崩溃。面对这种情况,AMQP 0-9-1 提供了一种消息确认的概念:当一个消息被传递到消费者时,消费者应该通知中间件确认消息已经到达。确认消息可以自动发送或者有程序开发人员选择手动确认。当使用消息确认时,中间件只有在接收到消息(或一组消息)对应的确认消息时,才将此消息从队列完全删除。

在特定情况下,例如,当消息无法被路由时,它将被返回给发送者,或者被丢弃,又或者当中间件实现了扩展时,可以将消息发送到被称为“死信队列”的消息队列。发送者根据发送消息时使用的参数决定如何处理这种情况。

队列,交换机和绑定统称为AMQP的实体。

AMQP是一种可编程的协议

AMQP 0-9-1 是一种可编程的协议意思是它的实体和路由方案主要都是由应用程序自身定义的,而不是中间件的管理员。因此,为声明队列、交换机及定义它们中间的绑定关系,订阅队列等协议操作动作制定了规则。

这给程序开发人员带来了极大的自由,但是同时也要求开发人员要注意一些潜在的定义冲突。事实上,定义冲突很少出现,一般表示配置错误。

程序声明了他们需要的AMQP 0-9-1的实体,定义了必要的路由方案,同时可以选择删除不再需要的实体。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值