RabbitMQ交换机类型有哪些

2025年Java面试宝典抢先领👉
链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g (建议保存备用)
作为消息队列的核心组件,RabbitMQ交换机负责将消息路由到正确的队列。面试中高频被问:"RabbitMQ交换机类型有哪些?" 今天咱们用大白话拆解四种核心交换机类型,帮你轻松应对技术面!
🔄 一、Direct Exchange(直连交换机)
RabbitMQ中最基础的交换机类型。它的路由逻辑简单粗暴:
- 队列绑定交换机时需指定routing key(如:
order.pay) - 生产者发消息必须携带完全匹配的
routing key - 消息只会投递到绑定键精确匹配的队列
👉 典型场景:订单支付成功通知。比如创建绑定键payment.success的队列,支付服务发送同键消息,确保只有支付队列能消费。
🌐 二、Topic Exchange(主题交换机)
最灵活的RabbitMQ交换机类型!支持通配符路由:
*匹配1个单词(如:order.*可匹配order.pay)#匹配0或多个单词(如:log.#可匹配log.error.db)
👉 实战案例:日志分级处理。绑定键syslog.error的队列收错误日志,syslog.#的队列收所有系统日志。交换机根据通配符智能分发。
🎯 三、Fanout Exchange(扇出交换机)
"广播模式"的RabbitMQ交换机!特点:
- 忽略
routing key - 消息会复制并投递到所有绑定队列
- 性能较高(底层优化了广播机制)
👉 经典用途:新用户注册后同时发短信、邮件、优惠券。只需将三个队列绑定到同一个Fanout交换机,注册服务发1条消息,三队列同时消费。
📬 四、Headers Exchange(头交换机)
不依赖routing key,通过消息头(headers)路由:
- 队列绑定交换机时声明匹配规则(
x-match参数)all:需匹配所有header键值对any:匹配任意一对即可
👉 适用场景:多维度消息过滤。例如消息头包含{"env":"prod", "region":"east"}时,只有声明匹配这些header的队列能收到消息。
💡 面试避坑指南
被问到"RabbitMQ交换机类型"时,别光背名字!面试官最想听:
- 使用场景差异(如:订单系统用Direct,日志系统用Topic)
- 路由关键参数(Direct看routing key,Headers看消息头)
- 性能影响(Fanout广播量大时注意队列堆积)
🎁 福利时间
如果你需要购买面试鸭会员,通过 面试鸭返利网 找我可返现25元!海量RabbitMQ面试真题随时刷👉
路由逻辑对比图

(不同RabbitMQ交换机类型的消息分发逻辑差异)
理解清楚这四种RabbitMQ交换机类型,消息路由问题再也不慌!建议结合具体业务场景多练习配置,面试时自然对答如流~



