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=pdftype=report
    • 消息头满足条件的消息才会被路由到该队列

总结

类型 路由方式 特点 典型场景
Direct 精确匹配 routing key 精确路由 指定任务队列
Fanout 广播 忽略 routing key,发送到所有队列 消息广播、日志广播
Topic 模糊匹配 routing key 支持 *# 通配符 复杂分发规则、事件订阅
Headers 匹配消息头 根据消息头属性路由 高度自定义路由需求
相关推荐
翘着二郎腿的程序猿1 小时前
SpringBoot集成@Slf4j注解:优雅输出日志,告别手动new Logger
java·spring boot·intellij-idea
wyt5314291 小时前
新手如何快速搭建一个Springboot项目
java·spring boot·后端
jinanmichael1 小时前
【SpringBoot】日志文件
java·spring boot·spring
网小鱼的学习笔记1 小时前
创建型设计模式(工厂、builder、原型、单例)
java·后端·设计模式
Kim Jackson1 小时前
我的世界Java版1.21.4的Fabric模组开发教程(二十二)创建生物(上)实体外观与动画设计
java·开发语言·fabric
逆境不可逃2 小时前
【从零入门23种设计模式21】行为型之空对象模式
java·开发语言·数据库·算法·设计模式·职场和发展
斯幽柏雷科技2 小时前
[Unity]Inspector各种写法(持续更新中)
java·unity·游戏引擎
盐水冰2 小时前
【烘焙坊项目】后端搭建(6)- 店铺状态设置
java·redis
健康平安的活着2 小时前
java中乐观锁+事务在批量导入,批量审批案例的使用
java·开发语言