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

# 核心概念
# 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 个信道并发发送消息) 类比:高速公路的“车道”,多个车辆(消息)通过同一条高速(连接)的不同车道(信道)并行行驶。