消息队列

消息队列原理以及各种消息中间件
帅旋
关注
充电
IT宅站长,技术博主,共享单车手,全网id:arthinking。

RabbitMQ架构解析

发布于 2021-10-12 | 更新于 2024-02-27

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 ↩︎

本文作者: 帅旋

本文链接: https://www.itzhai.com/columns/mq/rabbitmq/architecture.html

版权声明: 版权归作者所有,未经许可不得转载,侵权必究!联系作者请加公众号。

×
IT宅

关注公众号及时获取网站内容更新。