当前位置: 首页 > news >正文

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 中存放的消息,之后进行消费。

http://www.lqws.cn/news/465787.html

相关文章:

  • 【unitrix】 3.6 类型级数转基础类型(from.rs)
  • springboot通过独立事务管理器实现资源隔离与精准控制​
  • HTTPS的加密方式介绍
  • MinIO社区版文件预览失效?一招解决
  • 【Fargo】mediasoup发送2:码率分配、传输基类设计及WebRtcTransport原理
  • React 组件通信
  • C++ 移动构造:提升性能的利器
  • docker执行yum报错Could not resolve host: mirrorlist.centos.org
  • Snapchat矩阵运营新策略:亚矩阵云手机打造高效社交网络
  • C++:动态链接库的编写,__declspec 用法详解
  • 7.3.2_2平衡二叉树的删除
  • 【RTP】基于mediasoup的RtpPacket的H.264打包、解包和demo 1:不含扩展
  • windows下docker虚拟文件大C盘迁移D盘
  • GPT-1 与 BERT 架构
  • TodoList 案例(Vue3): 使用Composition API
  • 基于CNN-LSTM融合模型的环卫车动态称重算法研究:从频率感知到精准质量估计
  • 深入浅出JavaScript 中的代理模式:用 Proxy 掌控对象的“行为开关”
  • Python 爬虫案例(不定期更新)
  • Occt几何内核快速入门
  • Duende Identity Server学习之一:认证服务器及一个Oidc/OAuth认证、用于Machine 2 Machine的客户端
  • 在Docker、KVM、K8S常见主要命令以及在Centos7.9中部署的关键步骤学习备存
  • stm32移植freemodbus
  • C++ - vector 的使用
  • 【转】如何画好架构图:架构思维的三大底层逻辑
  • 使用 R 处理图像
  • SQL Server基础语句2:表连接与集合操作、子查询与CET、高级查询
  • 计算机网络第九章——数据链路层《流量控制和可靠传输》
  • 为WIN10微软输入法的全角切换Bug禁用Shift+Space组合键
  • 在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义
  • Nginx+Tomcat负载均衡、动静分离