消息队列(二):AMQP

2023-10-30 15:28:49 浏览数 (2)

AMQP(Advanced Message Queuing Protocol),叫做高级消息队列协议:一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同的开发语言等条件的限制。

备注:本篇只介绍AMQP的一些基本概念和设计方式。

一、基本概念

AMQP主要有三部分组成,Exchange、Binding、Queue。

1.Exchange用于接受生产者发布的消息,并根据一定的规则将消息存储到队列Queue里面。

2.Queue用于存储消息,直到消费者将所有的消息消费完为止。

3.Binding定义了Exchange和Queue之间的关联,并提供路由规则。

二、Binding的三种类型(Direct、Fanout 、Topic )

Binding提供了Direct、Fanout 、Topic三种模型来完成Exchange与Queue的交互。

1.Direct

根据消息携带的路由键(routing key)将消息投递给对应队列。直连交换机用来处理消息的单播路由。

消息中的“routing key”如果和Binding中的“binding key”一致, Direct exchange则将message发到对应的queue中,这里的对应关系是1对1。

2.Fanout

将消息路由给绑定到它身上的所有队列,且不理会路由键。扇形交换机用来处理消息的广播路由, 对应关系是1对多。每个发到Fanout类型Exchange的message都会分到所有绑定的queue上去。

3.Topic

通过对消息的路由键和队列到交换机的绑定模式之间的匹配,将消息路由给一个或多个队列。主题交换机用来实现消息的多播路由。根据routing key,及通配规则,Topic exchange将分发到目标queue中。关系是多对多。

三、AMQP所支持的体系结构

存储转发(多个消息发送者,单个消息接收者)。

分布式事务(多个消息发送者,多个消息接收者)。

发布订阅(多个消息发送者,多个消息接收者)。

基于内容的路由(多个消息发送者,多个消息接收者)。

文件传输队列(多个消息发送者,多个消息接收者)。

点对点连接(单个消息发送者,单个消息接收者)。

参考资料:

百度百科:AMQP

RabbitMQ与AMQP协议

RabbitMQ与AMQP协议详解

0 人点赞