全部学科
Python全栈
python
NodeJS全栈
nodejs

RABBITMQ 中级技能认证测试

21 题 60 分钟 难度:★★

考察知识点

  • 交换机类型详解(Direct、Fanout、Topic、Headers)
  • 消息路由与绑定规则
  • 死信队列与延迟队列原理及应用场景
  • 消息可靠性保障(发布确认、事务机制、持久化等)
  • 连接管理与 Channel 复用
  • 消费者模式与并发处理
  • 集群与高可用架构(镜像队列、Quorum 队列等)
  • 消息序列化与格式处理
💡 参考答案在文末
判断题
1

在RabbitMQ应用中,为每个消息发送都创建新的Connection和Channel是最简单的做法,且在生产环境中推荐使用这种方式。

A

B

2

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

A

B

3

在 RabbitMQ 中,queueBind 方法用于建立队列与交换机之间的绑定关系,绑定关系中可以指定 routing_key 和可选的 arguments 参数。

A

B

4

在RabbitMQ中,消息的content_type属性是一个可选的元数据字段,不设置该属性不会影响消息的正常投递和消费。

A

B

5

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

A

B

6

rabbitmq-delayed-message-exchange 是 RabbitMQ 官方内置的插件,无需额外安装即可直接使用。

A

B

7

在 RabbitMQ 消费端,当消费者处理消息抛出异常时,可以通过 basicNack 方法拒绝消息并设置 requeue=true 让消息重新入队重试。

A

B

8

RabbitMQ 原生支持消息去重功能,生产者可以通过设置消息的 message-id 属性让 Broker 自动过滤重复消息。

A

B

单选题
9

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

A

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

B

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

C

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

D

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

10

关于 RabbitMQ 的两种集群架构模式,以下说法正确的是:

A

普通集群模式下,队列内容和消息数据在所有节点间完整同步

B

镜像集群模式下,队列内容和消息数据在所有镜像节点间完整复制

C

普通集群模式下,消费者连接到任意节点都可以消费任意队列的消息,因为消息数据在该节点本地

D

镜像集群的性能高于普通集群,因为数据复制带来了更好的读写速度

11

关于手动确认(manual acknowledgment),以下哪种做法是最佳实践?

A

在消息回调函数入口处立即调用 basicAck 确认消息

B

在业务逻辑执行成功后(如数据库更新完成)调用 basicAck

C

在消费者启动时预先确认所有收到的消息

D

在消费者关闭时批量确认所有未确认的消息

12

关于 RabbitMQ 消费者预取数量(prefetch count),以下说法正确的是:

A

basicQos(10) 表示消费者每次最多同时处理 10 条消息,未确认消息达到 10 条时不再投递新消息

B

basicQos(10) 表示消费者每秒最多消费 10 条消息

C

basicQos(10) 表示队列中最多保留 10 条未消费的消息

D

basicQos(10) 表示消费者每次 basicGet 批量拉取 10 条消息

多选题
13

关于队列的多重绑定,以下哪些说法是正确的?

A

一个队列可以绑定到多个不同类型的交换机

B

队列绑定到同一交换机的多个路由键时,每条消息都会被多次投递到该队列

C

多重绑定可以用于实现消息的多来源聚合

D

队列绑定到多个交换机时,消费者需要分别处理来自不同路由键的消息

14

关于RabbitMQ Channel复用,以下哪些说法是正确的?

A

一个Connection上可以创建多个Channel

B

发布消息和消费消息可以共用同一个Channel

C

使用Publisher Confirms时,建议为确认回调使用独立的Channel

D

Channel的序号(channel number)在同一个Connection内唯一

15

在RabbitMQ中引入多VHost架构,以下哪些是其主要目的?

A

实现不同业务域之间的资源隔离

B

为不同租户(tenant)提供独立的权限管控

C

提升消息传输的吞吐量

D

允许不同团队独立管理各自VHost的资源而互不干扰

16

关于 Publisher Confirm 机制的 ConfirmCallback 回调,以下哪些说法是正确的?

A

ConfirmCallback 中的 ack 表示消息已成功到达交换机

B

ConfirmCallback 中的 nack 表示消息未到达交换机,可以重发

C

ConfirmCallback 是同步阻塞回调,会等待 Broker 响应

D

批量发布多条消息时,Broker 可能会批量返回确认

17

关于死信消息的 x-death header,以下说法正确的有哪些?

A

x-death 是一个列表类型,记录消息每次进入死信队列的信息

B

x-death 中的 reason 字段取值为 rejectedexpiredmaxlen

C

x-death 中的 queue 字段记录消息从哪个队列被转发为死信

D

消息多次进入死信队列时,x-death 列表只保留最后一次记录

18

从 RabbitMQ 集群中移除一个节点时,leave_clusterforget_cluster_node 的区别有哪些?

A

leave_cluster 在目标节点上执行,节点主动退出集群

B

forget_cluster_node 在集群的其他节点上执行,从集群中强制移除目标节点

C

leave_cluster 会保留节点上的队列数据

D

forget_cluster_node 会强制从集群元数据中删除该节点,即使该节点已宕机

19

以下关于RabbitMQ消息JSON序列化的描述,哪些是正确的?

A

JSON格式的消息体积通常比Protobuf大

B

JSON序列化后的消息体是UTF-8编码的文本

C

在JSON消息中可以安全地传输Java的Date对象

D

消费者端反序列化JSON时,字段顺序必须与生产者端完全一致

填空题
20

消息被转发到死信交换机时,默认使用的路由键是 ____________ 。如果希望自定义死信路由键,可以通过配置队列的 ____________ 参数来覆盖默认行为。

21

Topic 交换机绑定键 "order.#" 可以匹配路由键 "order" ( "#" 匹配 ____________ ),也可以匹配 "order.create.success" ( "#" 匹配 ____________ )。

参考答案
1.错误 2.正确 3.正确 4.正确 5.正确 6.错误 7.正确 8.错误 9.B 10.B 11.B 12.A 13.A;C;D 14.A;D 15.A;B;D 16.A;B;D 17.A;B;C 18.A;B;D 19.A;B 20.原队列名称;x-dead-letter-routing-key 21.零个单词;多个单词
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
下一套试卷 → RABBITMQ 初级技能认证测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码