RabbitMQ 的工作流程

RabbitMQ 是一个消息中间件,实现了生产者消费者模型,可以用来接收、存储、转发消息。

专有名词介绍

要了解 RabbitMQ 的工作流程,我们需要先了解下面几个关键词:

1、Producer

生产者,即向 RabbitMQ 发送消息。

2、Consumer

消费者,即接收 RabbitMQ 中的消息。

3、Broker

可以看作是 RabbitMQ 的服务器,用来接收、发送消息。

4、Connection

连接,是 Producer、Consumer 与 Broker 建立 的 TCP 连接,这个连接是建立消息传递的基础。

5、Channel

信道,是 Connection 的抽象,一个 Connection 可以有多个 Channel,消息的接收、发送都是基于 Channel。

使用 Channel 可以将多个消息的发送与接收集中到一个 TCP 连接上,可以减少连接的建立与关闭,节约了网络资源。

6、Queue

队列,用来存储消息;

一个 Queue 可以被多个消费者订阅,一个消费者也可以订阅多个 Queue。

7、Exchange

交换机,当消息到达 RabbitMQ 时,经过对应的交换机,将消息存储到对应的 Queue 中;

一个交换机可以对应多个 Queue。

8、Virtual host

虚拟主机,为消息队列提供了逻辑上的隔离机制;

一个 BrokerServer 中可以有多个 Virtual host,当多个用户使用一个 RabbitMQ 时,会划分出多个虚拟主机,每个用户在自己的虚拟主机中创建对应的 Exchange 和 Queue。

RabbitMQ 的工作流程

1、Producer 在与 RabbitMQ Broker 建立 TCP 连接之后,会开启一个 Channel;

2、Producer 将消息通过 Channel 发送给 RabbitMQ Broker;

3、Broker 接收到消息之后,就会根据 Producer 将消息通过其对应的 Exchange 存放至 Queue;

4、若没有对应的 Queue,就会依据 Producer 的配置,将消息传发给 Producer 或 丢弃;

5、Consumer 与 RabbitMQ 建立连接之后,就可以获取对应的 Queue 中存放的消息,之后进行消费。

相关推荐
新鲜势力呀4 小时前
PHP 消息队列实战:从同步接口阻塞到 RabbitMQ + Redis队列 + 异步任务架构完整优化方案
redis·rabbitmq·php
老陈说编程12 小时前
1. 鸿蒙 (HarmonyOS) 2012 至 2026 年的发展历程
分布式·华为·个人开发·harmonyos·鸿蒙·鸿蒙系统·程序员创富
xxwl5851 天前
RabbitMQ 学习笔记
笔记·学习·rabbitmq
ly76892 天前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
灯澜忆梦2 天前
【minio】#5 | MinIO 分布式部署 + HTTPS 部署
分布式·网络协议·https·对象存储·minio
谢亮_vipxieliang3 天前
Spring Cloud 服务治理入门:注册发现、配置中心、网关限流、熔断降级与分布式一致性方案
分布式·spring·spring cloud
樱花落木兰3 天前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
ShineWinsu3 天前
对于Redis:Steam、Geospatial、Hyperloglog、Bitmap、Bitfield类型的解析
数据库·c++·redis·分布式·缓存·面试·zset
Flynt4 天前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式