# RabbitMQ是什么

RabbitMQ 是一个开源的消息中间件(Message Broker),基于 AMQP(高级消息队列协议,Advanced Message Queuing Protocol)实现,旨在为分布式系统提供可靠的异步通信解决方案。

# 工作流程图

7155dffd7de3e7b3ef01976ca1cbc16e

# 核心概念

# Exchange

交换机,消息的分发中心,它接收生产者发送的消息并根据一定的规则(Routing Key)将消息路由到一个或多个队列中。

RabbitMQ提供了不同类型的交换机,包括:

  • 直连交换机(Direct Exchange):根据消息的路由键将消息发送到特定队列。

  • 主题交换机(Topic Exchange):根据消息的路由键和通配符匹配将消息发送到多个队列。

  • 扇出交换机(Fanout Exchange):将消息广播到与交换机绑定的所有队列。

  • 头交换机(Headers Exchange):根据消息的自定义头部属性进行匹配路由。

# Queue

队列,RabbitMQ 的内部对象,消息的最终存储容器,消费者从这里获取消息 每个队列都有一个名称,它们可以绑定到一个或多个交换机,并指定了消息的路由规则

队列通过Routing Key与交换机绑定

# Routing Key

路由键 ,生产者在发布消息时指定的一个关键字,它告诉交换机将消息路由到哪个队列。

路由键的意义取决于交换机的类型

  • 直连交换机中,路由键通常与队列的绑定键一致
  • 主题交换机中,路由键可以使用通配符进行匹配

# Binding

绑定,交换机和队列之间的关联关系

它定义了如何将消息从交换机路由到队列。绑定通常使用路由键(Routing Key)来指定消息的路由规则。

# Producer

生产者,消息的发送方。它们创建消息并将其发布到 RabbitMQ 的交换机上

# Consumer

消费者,消息的接收方,它们订阅队列并从中获取消息

# Channel

信道 ,生产者和消费者与 RabbitMQ 通信的轻量级通道,复用 TCP 连接。

避免频繁创建 TCP 连接(一个连接可创建多个信道,如 1 个连接支持 1000 个信道,节省资源)。 线程安全:每个线程独立使用信道,互不干扰(如电商订单服务:10 个线程通过 1 个连接的 10 个信道并发发送消息) 类比:高速公路的“车道”,多个车辆(消息)通过同一条高速(连接)的不同车道(信道)并行行驶。

上次更新: 2025/09/04 17:28:38