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 分钟前
IDEA中Javaweb项目创建+servlet,实现简单的信息录入获取
java·servlet·intellij-idea·web
程序员Jelena4 分钟前
接口调用的代码实现:从入门到实战
java
代码钢琴师7 分钟前
Throttle4j 快速上手教程
java
2601_9611940220 分钟前
考研资料电子版|去哪找|网盘
java·c语言·c++·python·考研·php
于先生吖23 分钟前
前后端分离二手商城开发,质检登记、回收回款整套业务源码部署教程
java·开发语言·uni-app
小锋java123442 分钟前
分享一套锋哥原创的基于LangChain4j的RAG医疗健康知识智能问答系统(SpringBoot4+Vue3+Ollama)
java·人工智能
程序员晨曦1 小时前
Java 并发修仙传:ThreadLocal 从“闭关修炼”到“走火入魔”的救赎之路
java·开发语言
AIGS0011 小时前
探索向量空间JBoltAI:工业企业数智化升级的基础设施
java·人工智能·人工智能ai大模型应用
zhangjw341 小时前
第18篇:Java网络编程零基础详解,IP、端口、TCP、UDP、Socket通信、实战文件传输
java·网络·tcp/ip
我命由我123451 小时前
Java 开发 - Jar 包与 War 包
java·开发语言·java-ee·intellij-idea·jar·idea·intellij idea