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 匹配消息头 根据消息头属性路由 高度自定义路由需求
相关推荐
她说..10 分钟前
Java 基本数据类型高频面试题
java·开发语言·jvm·spring boot
y = xⁿ16 分钟前
小林coding:HashMap的原理,ConcurrentHashMap实现逻辑,1.8并发是如何超越1.7的
java·面试·hash
white-persist25 分钟前
【vulhub weblogic CVE-2017-10271漏洞复现】vulhub weblogic CVE-2017-10271漏洞复现详细解析
java·运维·服务器·网络·数据库·算法·安全
砍材农夫27 分钟前
spring-ai 第三结构化输出
java·人工智能·spring
麦芽糖021928 分钟前
若依整合AI三 拔高原理篇
java
2501_9216494929 分钟前
Java 接入外汇数据 API 完整教程:实时报价、历史 K 线与 WebSocket 推送
java·开发语言·websocket·金融
希望永不加班31 分钟前
SpringBoot 整合 MongoDB
java·spring boot·后端·mongodb·spring
℡終嚸♂68032 分钟前
Java 反序列化漏洞详解
java·开发语言
执笔画流年呀41 分钟前
如何用Navicat来创建表
java·mysql
好家伙VCC1 小时前
**发散创新:基于以太坊侧链的高性能去中心化应用部署实战**在区块链生态中,*
java·python·去中心化·区块链