当前位置: 首页 > ai >正文

RabbitMQ的交换机

一、三种交换机模式

核心区别对比​

​特性​​广播模式(Fanout)​​路由模式(Direct)​​主题模式(Topic)​
​路由规则​无条件复制到所有绑定队列精确匹配 Routing Key通配符匹配 Routing Key*/#
​消息分发​1:N(所有消费者收到相同消息)1:1 或 1:N(相同 Key 的队列)M:N(灵活匹配多个队列)
​典型应用场景​系统通知、多服务数据同步任务分发、精确路由(如支付处理)分类事件(如日志分级、新闻订阅)
​Exchange 类型​Fanout Exchange(RabbitMQ)Direct ExchangeTopic Exchange
​Routing Key​忽略必须完全匹配支持通配符(如 news.*

​2. 详细说明​

​(1) 广播模式(Fanout)​
  • ​核心逻辑​​:
    消息发送到 Fanout Exchange 后,会​​无条件复制到所有绑定的队列​​,消费者订阅不同队列时会收到相同消息。
  • ​示例场景​​:
    • 系统公告:一条消息需同时触发邮件、短信、日志服务。
    • 数据同步:订单创建后广播给库存、物流、分析服务。
  • ​特点​​:
    • 简单粗暴,无过滤逻辑。
    • 性能开销较大(消息全量复制)。
​(2) 路由模式(Direct)​
  • ​核心逻辑​​:
    消息通过精确的 Routing Key 匹配到指定队列,只有绑定相同 Key 的消费者能收到消息。
  • ​示例场景​​:
    • 支付处理:routing_key=payment.success 仅路由到支付服务队列。
    • 任务分发:多个 worker 竞争消费同一队列(工作队列模式)。
  • ​特点​​:
    • 精准控制消息接收方。
    • 灵活性较低(需提前定义 Key)。
​(3) 主题模式(Topic)​
  • ​核心逻辑​​:
    通过通配符(* 匹配一个单词,# 匹配多级)动态匹配 Routing Key,实现灵活的路由。
  • ​示例场景​​:
    • 日志分级:log.error 路由到告警服务,log.info 路由到存储服务。
    • 新闻订阅:用户订阅 news.sports 或 news.weather
  • ​特点​​:
    • 兼顾广播的覆盖范围和路由的精确性。
    • 适合多维度、分层级的消息分类。

​3. 不同消息队列的实现​

​MQ 类型​​广播模式​​路由模式​​主题模式​
​RabbitMQ​Fanout ExchangeDirect ExchangeTopic Exchange
​Kafka​多个 Consumer Group 独立消费单 Partition 或 Key 路由Topic + 通配符订阅
​RocketMQ​广播消费(Broadcasting)Tag 过滤(精确匹配)Tag 过滤(通配符支持)

​4. 如何选择?​

  • ​需要无条件广播?​​ → ​​Fanout​​(如全量数据同步)。
  • ​需要精确路由?​​ → ​​Direct​​(如支付结果处理)。
  • ​需要动态分类?​​ → ​​Topic​​(如日志分级、多维度事件)。

5.java代码实现(生产者)

​总结​

  • ​广播模式​​:简单粗暴,适合全覆盖场景。
  • ​路由模式​​:精准控制,适合点对点或任务分发。
  • ​主题模式​​:灵活匹配,适合复杂分类和订阅需求。

二、RabbitMQ对应的工作模式

​1. 简单模式(Simple)​

  • ​对应机制​​:
    • ​默认直连队列​​(无Exchange),生产者直接发消息到指定队列,单个消费者消费。
    • ​本质​​:最基础的点对点通信。

​2. 工作队列模式(Work Queue)​

  • ​对应机制​​:
    • ​Direct Exchange的简化版​​:多个消费者共享同一队列,消息轮询或竞争消费(仍属于路由模式,但隐式使用队列名作为Routing Key)。
    • ​特点​​:无显式Routing Key,负载均衡分发。

​3. 发布/订阅模式(Pub/Sub)​

  • ​对应机制​​:
    • ​Fanout Exchange​​:消息广播到所有绑定队列,忽略Routing Key。
    • ​特点​​:1:N广播,所有订阅者收到相同消息。

​4. 路由模式(Routing)​

  • ​对应机制​​:
    • ​Direct Exchange​​:消息通过精确匹配Routing Key路由到指定队列。
    • ​特点​​:1:1或1:N(相同Key的队列),精确控制接收方。

​5. 通配符模式(Topics)​

  • ​对应机制​​:
    • ​Topic Exchange​​:通过通配符(*匹配一个词,#匹配多级)动态匹配Routing Key。
    • ​特点​​:灵活分类,如 news.sports 或 weather.*

​三、总结对应关系​

​模式名称​​对应Exchange类型​​Routing Key规则​​分发逻辑​
简单模式(无,直连队列)队列名作为隐式Key1:1点对点
工作队列模式Direct(隐式)队列名作为隐式Key1:N竞争消费
发布/订阅模式Fanout忽略1:N广播
路由模式Direct精确匹配1:1或1:N(相同Key)
通配符模式Topic*#通配符M:N动态匹配
http://www.xdnf.cn/news/3440.html

相关文章:

  • 解决The‘InnoDB’feature is disabled; you need MySQL built with ‘InnoDB’ to have it
  • ARM架构详解:定义、应用及特点
  • 计算机组成原理实验(6) 微程序控制单元实验
  • 大模型开发学习笔记
  • 提示词版本化管理:AI开发中被忽视的关键环节
  • 【Linux】基础指令(2)
  • 冯·诺依曼体系:现代计算机的底层逻辑与百年传承
  • C++ 与 Lua 联合编程
  • Python-pandas-操作Excel文件(读取数据/写入数据)及Excel表格列名操作详细分享
  • 单链表操作(single list)
  • Python高级爬虫之JS逆向+安卓逆向1.7节: 面向对象
  • NY204美光闪存MT29F8T08EQLCHL5-QA:C
  • python设置word字体的方法
  • GBDT 基本概述
  • JVM——JVM 是如何执行方法调用的?
  • 华为云Astro轻应用利用自定义连接器调用第三方接口实际操作
  • 【家政平台开发(98)】解锁家政平台新姿势:业务模式创新与多元化发展
  • C++11新特性_标准库_std::array
  • 软连接和硬连接【Linux操作系统】
  • Spring Boot中集成Guava Cache或者Caffeine
  • 接口测试实战指南:从入门到精通的质量保障之道
  • 【安装指南】Centos7 在 Docker 上安装 RabbitMQ4.0.x
  • 芯片中的pad、strap和probe
  • C++11新特性_委托构造函数
  • 《Android 应用开发基础教程》——第十一章:Android 中的图片加载与缓存(Glide 使用详解)
  • 铸铁划线平板:多行业的精密测量工具(北重铸铁平板厂家)
  • golang常用库之-标准库text/template
  • C++负载均衡远程调用学习之消息队列与线程池
  • 【前端知识】Vue3状态组件Pinia详细介绍
  • 同城跑腿小程序帮取帮送接单抢单预约取件智能派单同城配送全开源运营版源码优创