6

RabbitMQ/AMQP核心概念 , 以及消息流转流程

 3 years ago
source link: https://www.skypyb.com/2018/12/jishu/749/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

RabbitMQ/AMQP核心概念 , 以及消息流转流程

AMQP核心概念:

Server:又称Broker,接收客户端的连接,实现AMQP实体服务

Connection:连接,应用程序与Broker的网络连接。

Channel:网络信道,几乎所有的操作都在Channel中进行,每个Channel代表一个会话任务。

Message:消息,服务器和应用程序之间传送的数据,由Properties和Body组成。Properties可以对消息进行修饰,比如消息的优先级、延迟等高级特性;Body则就是消息体内容。

Virtual host:虚拟地址,用于进行逻辑隔离。最上层的消息路由,一般用于在同一台服务器上隔离不同的项目,一个Virtual host里面可以有若干个Exchange和Queue,同一个Virtual host里面不能够有相同名称的Exchange和Queue。

Exchange:交换机,接收消息,根据路由键转发消息到绑定的队列(Queue)上。

Binding: Exchange和Queue之间的虚拟连接,binding中可以包含Routing key

Routing key:一个路由规则,虚拟机可用它来确定如何路由一个特定消息。

Queue:也成为Message Queue,消息队列,保存消息并将它们转发给消费者

RabbitMQ消息是如何流转的?

我说下我的理解,我看的是视频教程。网上搜了一下,关于RabbitMQ的消息流转流程这一块的讲解略少。故自己整理一下。

Server应该可以理解为服务器(我也不确定这么说准不准确)。服务器通过tcp接收到客户端的连接(Connection)。三次握手之后,开启一个信道(Channel)(网络通道)。话说这一段感觉似曾相识…用啥中间件都有这步骤额,就是连数据库也是这个流程啊。

生产者这边发送一个消息(Message)到指定的虚拟地址 (Virtual host)上,需要指定交换机。对应的交换机(Exchange)即开始对该条消息的路由规则(Routing key)进行解析,如果该条路由规则绑定了一个或多个队列(Queue)则会将消息转发到绑定的队列上,若该路由规则在此交换机上并没有绑定任何队列则该条消息丢失。然后队列接收到消息时,监听该队列的消费者就会得到通知,来对队列中的消息进行处理。这应该就是一个大概的消息流转流程了。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK