目录
[一、RabbitMQ 与 AMQP 协议的关系](#一、RabbitMQ 与 AMQP 协议的关系)
[1. 什么是 AMQP 协议?](#1. 什么是 AMQP 协议?)
[二、RabbitMQ 五大核心组件](#二、RabbitMQ 五大核心组件)
[1. 生产者(Producer)](#1. 生产者(Producer))
[2. 消费者(Consumer)](#2. 消费者(Consumer))
[3. 交换机(Exchange)](#3. 交换机(Exchange))
[4. 队列(Queue)](#4. 队列(Queue))
[5. 绑定(Binding)以及 路由键(RoutineKey)](#5. 绑定(Binding)以及 路由键(RoutineKey))
[三、RabbitMQ 四大交换机类型](#三、RabbitMQ 四大交换机类型)
[1. Direct 直连交换机(默认交换机)](#1. Direct 直连交换机(默认交换机))
[2. Fanout 广播交换机](#2. Fanout 广播交换机)
[3. Topic 主题交换机(最灵活)](#3. Topic 主题交换机(最灵活))
[4. Headers 头交换机(极少使用)](#4. Headers 头交换机(极少使用))
一、RabbitMQ 与 AMQP 协议的关系
1. 什么是 AMQP 协议?
简单来说amqp协议就是一套理论标准,rabbitMq就是这套理论标准的具体实现。AMQP协议全称叫高级消息队列协议,AMQP只是一个协议,并不是一个可运行的软件,协议规定了消息队列应该长什么样子,而rabbitMq则是按照这套规定实现的消息队列。
总结来说就是AMQP协议提供了消息队列应该怎么实现的思路,而rabbitMq则是把这个思路完整的变成现实。
二、RabbitMQ 五大核心组件
RabbitMQ 的完整消息流转链路:生产者 → 交换机 → 队列 → 消费者,整条链路依赖五大核心组件协同工作,缺一不可。

1. 生产者(Producer)
生产者是负责发送消息的一方,是主动发送消息的应用程序,是消息的来源。生产者不会直接发送消息到队列,只会将消息发送到指定交换机,由交换机完成路由分发。
2. 消费者(Consumer)
被动接收、处理消息的应用程序。消费者直接监听****消息队列,从队列中获取消息并消费,不直接连接交换机。多个消费者可以监听同一个队列,从而实现负载均衡。
3. 交换机(Exchange)
RabbitMQ 的核心路由组件 ,充当消息分发器的职责。接收生产者的消息,根据 交换机类型 + RoutingKey + 绑定规则 的组合路由规则,将消息路由到对应队列。本身不存储消息,只负责转发,无匹配队列则消息丢失。
4. 队列(Queue)
队列是真正存储消息的组件,本质就是一个遵循先进先出的消息缓冲区。。一个队列可以被多个消费者绑定,实现多消费者并行消费。
5. 绑定(Binding)以及 路由键(RoutineKey)
交换机与队列之间的关联关系,是消息路由的桥梁。路由键是生产者发送消息时所带的标识,通过BindingKey来绑定交换机和队列,交换机根据消息的RoutineKey与绑定的BindingKey进行匹配,完成消息分发。
6,连接(Connection)和信道(Channel)
Connection是客户端和RabbitMQ之间的TCP长连接,Channel则是建立在连接之上的轻量级信道,由于建立TCP连接开销很大,所以用多个信道来传输消息,达到节省资源的目的。
总结下来就是:生产者神将消息发送到交换机,交换机根据RoutineKey来匹配不同的队列,将消息发送到队列,消费者监听队列从队列中消费消息。
三、RabbitMQ 四大交换机类型
交换机的核心作用是定义消息路由规则 ,不同类型交换机对应不同的匹配逻辑,从而可以在应用在不同的业务场景。RabbitMQ 标准四大交换机类型:Direct、Fanout、Topic、Headers。
1. Direct 直连交换机(默认交换机)
路由规则 :精确完全匹配,只有消息的RoutineKey与队列的Bindingkey完全一致,消息才会被投递到该队列,适用于点对点通信、精准发送的场景。
特点:一对一精准分发、路由匹配开销小、性能极高,是 RabbitMQ 默认的交换机类型。系统默认存在匿名直连交换机(空字符串),无需手动声明。
2. Fanout 广播交换机
**路由规则:**只要队列绑定了该交换机,所有与交换机绑定的队列都会无条件接收同一条消息。
适合群发通知,多服务订阅进行同步更新场景,效率高。
核心特点:纯广播模式、无路由匹配逻辑、性能是四种交换机中最高的,所有订阅队列同步接收消息。
3. Topic 主题交换机(最灵活)
路由规则:支持通配符匹配,是 Direct 和 Fanout 类型交换机的结合体。
消息的RoutineKey和队列绑定的BindingKey支持分层匹配(以 . 分割层级),包含两个专属通配符:* 指可以匹配一个单词, # 指可以匹配0个或者多个单词,非常灵活。适合日志分级收集,消息的分类推送等精细化场景。
核心特点:路由规则灵活、支持多维度消息分类,可实现精准分发、批量分发、分层分发多种效果。
4. Headers 头交换机(极少使用)
路由规则 :不依赖交换机的路由键的匹配规则来路由消息,而是根据发送的消息内容的headers属性进行匹配,适用于少数需要多自定义条件匹配的特殊业务,日常开发基本不用。
核心特点:匹配逻辑复杂、性能低,不适合高并发场景。
交换机类型核心对比总结表
| 交换机类型 | 匹配规则 | 通信模式 | 性能 | 核心适用场景 |
|---|---|---|---|---|
| Direct | 精准完全匹配 | 一对一 | 极高 | 订单通知、精准任务分发 |
| Fanout | 无视路由键,全广播 | 一对多 | 最高 | 全局通知、日志广播、数据同步 |
| Topic | 通配符模糊匹配 | 多对多 | 中等 | 分级日志、多维度消息订阅 |
| Headers | 消息头属性匹配 | 自定义多对多 | 极低 | 复杂自定义条件路由(极少用) |