RabbitMQ :与AMQP的关系、核心组件、交换机类型

目录

[一、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))

6,连接(Connection)和信道(Channel)

[三、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 消息头属性匹配 自定义多对多 极低 复杂自定义条件路由(极少用)
相关推荐
Thomas.Sir3 天前
第21课:PyTorch|GPU多卡训练与分布式训练基础【让多卡并行成为你的加速引擎】
人工智能·pytorch·分布式
Cicada1283 天前
库存消息消费的正确性设计——从幂等窗口到批量流水线
分布式·系统架构
Francek Chen4 天前
【大数据处理与分析】数据仓库Hive:04 数据仓库Hive概述
大数据·数据仓库·hive·hadoop·分布式
Gl�ria4 天前
Hadoop/YARN 集群缩容:下线DN节点
大数据·hadoop·分布式
吉甫作诵4 天前
Kafka 集群安装与运维实战:消费组排查、Offset 重置与副本重分配
大数据·运维·分布式·kafka·消息队列
imDwAaY4 天前
消息队列四大核心问题:顺序性、幂等性、可靠性与一致性
学习·kafka·rabbitmq
是Dream呀5 天前
Harness 工程:让 Agent 真正把任务做完
人工智能·分布式·缓存·agent
yt004yt5 天前
绿岛数字化平台搭建:VOCs 监测与能碳数据一体化方案
大数据·分布式
天天喝旺仔5 天前
分布式服务容错实战:用 Sentinel 实现限流、熔断与降级
分布式·微服务·云原生·sentinel