Java高频面试题:RabbitMQ中有哪几种交换机类型?

大家好,我是锋哥。今天分享关于【Java高频面试题:RabbitMQ中有哪几种交换机类型?】**面试题。**希望对大家有帮助;

Java高频面试题:RabbitMQ中有哪几种交换机类型?

在 RabbitMQ 中,交换机(Exchange)是消息路由的核心组件,它负责接收生产者发送的消息,然后根据 路由规则 将消息分发到一个或多个队列。RabbitMQ 默认支持以下 四种主要交换机类型:


1. Direct(直连交换机)

  • 特点 :根据 完全匹配的路由键(routing key) 将消息发送到绑定的队列。
  • 使用场景:需要精确路由的情况。
  • 例子 :
    • 队列A绑定了routing key "info",队列B绑定了 "error"。
    • 如果生产者发送的消息路由键是 "info",则消息只会进入队列A。

2. Fanout(扇形/广播交换机)

  • 特点 :忽略路由键,把消息发送给绑定到交换机的 所有队列。
  • 使用场景:广播消息,比如通知系统、日志系统。
  • 例子 :
    • 队列A、B、C都绑定到同一个Fanout交换机。
    • 生产者发送一条消息,三个队列都会收到这条消息。

3. Topic(主题交换机)

  • 特点 :根据 模糊匹配的路由键 进行路由。路由键通常是以 . 分隔的字符串,队列绑定时使用通配符:
    • * :匹配一个单词
    • # :匹配零个或多个单词
  • 使用场景:复杂路由需求,如日志分级、事件分发。
  • 例子 :
    • 队列A绑定 "user.*",队列B绑定 "user.#"
    • 消息 "user.create" 会进入队列A和B
    • 消息 "user.profile.update" 会进入队列B,但不会进入队列A

4. Headers(头部交换机)

  • 特点 :通过 消息头(Headers)匹配 进行路由,而不是通过 routing key。
  • 使用场景:当路由规则非常复杂,不便用字符串匹配时使用。
  • 例子 :
    • 队列绑定条件:x-match = all,头部必须包含 format=pdf 且 type=report
    • 消息头满足条件的消息才会被路由到该队列

✅ 总结:

类型 路由方式 特点 典型场景
Direct 精确匹配 routing key 精确路由 指定任务队列
Fanout 广播 忽略 routing key,发送到所有队列 消息广播、日志广播
Topic 模糊匹配 routing key 支持 * 和 # 通配符 复杂分发规则、事件订阅
Headers 匹配消息头 根据消息头属性路由 高度自定义路由需求
相关推荐
AI你一生一世10 分钟前
不止于时序存储:DolphinDB 如何成为 AI 时代的工业智能底座
java·人工智能·struts·时序数据库·工业智能·dolphindb·ai基础设施
云-缩影22 分钟前
拆解 AI 图像生成应用的后端架构:ECS、OSS 和大模型 API 怎么配合
java·spring boot·后端
瑞克-桑切斯43 分钟前
7、MySQL 慢查询排查与优化实战指南
java·服务器·数据库
海的透彻5 小时前
dockerfile如何快速构建容器(java服务)
java·开发语言
code2cat5 小时前
Java工具篇之Gradle:用任务图组织构建与交付
java·开发语言·单元测试·gradle
后台模板学习6 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
w_zero_one6 小时前
算法--构造
java·数据结构·算法
SL_staff6 小时前
制造业订单交付崩盘?用四层协同框架重建交付可信度(技术实践)
java·产品·全栈
SL_staff7 小时前
打破风控迭代死循环:用决策编排重构业务与技术协作链路
java·产品·全栈
Mikko78 小时前
Redis 连接数满了服务端有错误信息吗?连接数不增加却命令超时?6.2 实测连接池、超时与大 key 怎么判定
java·spring boot·redis·后端