全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 16 道配套习题

交换机类型详解专题

专题说明

本专题深入讲解 RabbitMQ 的交换机类型机制,包括 Direct、Fanout、Topic 和 Headers 四种交换机的特点和使用场景。

学习目标

  1. 掌握四种交换机类型的区别和适用场景
  2. 理解路由键与绑定机制
  3. 能够根据业务需求选择合适的交换机类型

学习建议

建议结合代码实例理解每种交换机的路由规则。

📝 配套习题(16 题)

💡 参考答案在文末
判断题
1

Fanout 交换机在路由消息时会忽略 routing_key,将消息广播到所有绑定的队列。

A

B

2

Direct 交换机支持将同一个队列绑定到同一个路由键上,从而实现多个消费者共同处理同一类消息。

A

B

3

Topic 交换机支持使用通配符匹配路由键,其中 "#" 匹配零个或多个单词,"*" 匹配恰好一个单词。

A

B

4

RabbitMQ 启动后会自动创建一个名为 ""(空字符串)的默认交换机,生产者无需显式声明交换机即可直接发布消息到队列。

A

B

单选题
5

以下哪个场景最适合使用 Fanout 交换机?

A

根据用户级别将通知路由到不同的处理队列

B

将系统配置变更消息同时广播到缓存刷新队列、日志记录队列和审计队列

C

将订单消息路由到处理队列,routing_key 为 "order.create"

D

根据路由键通配符匹配日志级别

6

以下哪种场景最适合使用 Direct 交换机?

A

需要将日志消息广播到所有监控队列

B

需要将订单消息仅路由到对应的处理队列(如 error 队列、info 队列)

C

需要将消息按主题分类模糊匹配路由

D

需要将消息随机分配到任意队列实现负载均衡

7

在使用 RabbitMQ 默认交换机时,消息是如何路由到队列的?

A

消息广播到所有已绑定的队列

B

消息根据 routing_key 与队列名进行精确匹配

C

消息根据 routing_key 的通配符模式匹配队列

D

消息随机分配到任意队列

8

某系统使用 Topic 交换机,队列绑定的绑定键为 "log.#",以下哪条消息的路由键不会被该队列接收?

A

log.error

B

log.warn.database

C

error.log

D

log

多选题
9

关于 Direct 交换机的路由机制,以下哪些说法是正确的?

A

Direct 交换机使用精确匹配进行消息路由

B

一个队列可以绑定到 Direct 交换机的多个不同路由键

C

Direct 交换机支持通配符匹配路由键

D

如果消息的 routing_key 没有匹配任何绑定键,消息将被丢弃或返回给生产者

10

关于 Fanout 交换机的特性,以下哪些说法是正确的?

A

Fanout 交换机会根据 routing_key 进行消息过滤

B

Fanout 交换机会为每个绑定队列发送消息的完整副本

C

Fanout 交换机适合实现发布/订阅模式

D

Fanout 交换机绑定的队列数量为 0 时,消息会被丢弃

11

关于 RabbitMQ 的默认交换机,以下哪些说法是正确的?

A

默认交换机的名称是一个空字符串

B

默认交换机是 Fanout 类型

C

每个队列会自动绑定到默认交换机,绑定键与队列名相同

D

生产者可以通过指定 exchange 参数为空字符串来使用默认交换机

12

关于 Topic 交换机的通配符匹配规则,以下哪些绑定键可以匹配路由键 "usa.news.tech"?

A

usa.#

B

usa.*.tech

C

#.tech

D

usa..news.

填空题
13

RabbitMQ 的默认交换机类型是 ____________ ,当使用默认交换机时,消息的 routing_key 必须与 ____________ 完全匹配才能成功路由。

14

在 Direct 交换机中,如果消息的 routing_key 为 "error",则只会路由到绑定键为 ____________ 的队列。如果一个队列需要同时接收 "error" 和 "warning" 两种消息,则需要对该交换机进行 ____________ 操作。

15

Fanout 交换机的路由策略是 ____________ ,它会将消息发送到 ____________ 的队列,而不考虑 routing_key 的值。

16

Topic 交换机中,通配符 "" 匹配恰好 ____________ ,通配符 "#" 匹配零个或 ____________ 。绑定键 "order." 可以匹配路由键 "order.create" ,但不能匹配 "order.create.success"。

参考答案
1.正确 2.正确 3.正确 4.正确 5.B 6.B 7.B 8.C 9.A;B;D 10.B;C;D 11.A;C;D 12.A;B;C 13.Direct;队列名 14.error;两次绑定 15.广播;所有绑定 16.一个单词;多个单词
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 RabbitMQ 简介与安装专题
下一个专题 → 安全与权限控制专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码