RabbitMQ架构解析

|

RabbitMQ的整体架构如下图所示:

image-20211010222005614

Broker:Broker中按虚拟主机(virtual host)划分,每个虚拟主机下面有自己的交换机(exchange)和消息队列(queue),以及交换机和队列的绑定routing_key(有些人会把这个key称为binding_key);

生产端:一般地,同一个客户端(client)里面的每个生产者(producer)创建一个专门的通道(channel),复用同一个TCP连接(connection),每个生产者可以往Broker发布消息,发布消息的时候,需指定虚拟主机,以及虚拟主机上的交换机,并且消息需要带上routing_key;

消费端:一般地,同一个客户端(client)里面的每个消费者(consumer)创建一个专门的通道(channel),复用同一个TCP连接,每个消费者指定一个消息队列进行消费。同一个消息队列,可以有多个消费者共同消费,但消息队列里面的同一条消息,只会由一个消费者消费,多个消费者相当于给消息队列做了负载均衡。

针对默认交换机直连交换机主题交换机生产端带入的routing_key交换机与队列之间绑定的routing_key(binding_key)进行匹配,匹配上了,就把消息投递给对应的消息队列。

针对扇形交换机,直接把消息投递给所有与扇形交换机绑定的队列。

rabbitmqctl是管理RabbitMQ服务器节点的主要命令行工具,相关完成命令介绍参考:rabbitmqctl(8)[1]

References


  1. rabbitmqctl(8). Retrieved from https://www.rabbitmq.com/rabbitmqctl.8.html ↩︎