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 匹配消息头 根据消息头属性路由 高度自定义路由需求
相关推荐
像我这样帅的人丶你还3 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩3 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
tntxia4 小时前
Mybatis的日志输入
java
亦暖筑序5 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
用户298698530148 小时前
Java 实现 Word 文档加密与权限解除
java·后端
Yeats_Liao9 小时前
14:Servlet中的页面跳转-Java Web
java·后端·架构
未秃头的程序猿9 小时前
告别"if-else地狱"!Java 21模式匹配,代码优雅了10倍
java·后端·面试
鹤望兰6759 小时前
字节跳动国际支付-后端开发-三面面经
java
Flittly9 小时前
【AgentScope Java新手村系列】(14)人机交互
java·spring boot·spring
RainCity9 小时前
Java Swing 自定义组件库分享(十二)
java·笔记·后端