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 消息头属性匹配 自定义多对多 极低 复杂自定义条件路由(极少用)
相关推荐
梅菲塔亚4 分钟前
Ceph分布式存储
分布式·ceph
acrel72 小时前
Acrel-1000系列分布式光伏监控系统在湖北荆门一马光彩大市场屋顶光伏发电项目中应用
分布式·光伏并网
程序 代码狂人2 小时前
金融数仓体系与核心业务知识详解
大数据·分布式·spark
java_nnnn5 小时前
Redis 初识:从单体架构到分布式架构的演进
redis·分布式·架构
Sayai5 小时前
Kafka 2.8→3.9.1 跨大版本升级实战:ZooKeeper 同步升级、数据目录迁移与回滚预案全流程
大数据·运维·分布式·zookeeper·kafka
敲上瘾5 小时前
分布式系统——Redis哨兵:自动故障转移与选举原理
linux·数据库·redis·分布式·缓存·微服务
微三云 - 廖会灵 (私域系统开发)21 小时前
供应链系统实战:多渠道订单聚合与分布式库存一致性方案总结
开发语言·分布式·php
她说可以呀21 小时前
Docker 镜像的两种创建方式
java·分布式·docker
杭州领祺科技1 天前
分布式光伏『四可』接入改造:绿电直连场景下的二次系统通信与安全架构(27 号令 4 区落位 + 7 产品边界)
分布式·安全·安全架构·光伏·电力·绿电直连·二次系统