全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页

消息可靠性保障专题测试

20 题 45 分钟 难度:

考察知识点

  • 消息可靠性保障相关概念
  • RabbitMQ 进阶实践
1
判断题

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

A

B

2
单选题

消费者处理消息时发生异常,以下哪种做法最适合实现消息重试与失败降级策略?

A

永远不确认消息,让消息一直留在队列中

B

使用 basicNack 拒绝消息并 requeue=true,不做任何限制

C

使用 basicNack 拒绝消息,配合死信队列和重试队列实现有限次重试

D

使用 basicAck 确认消息,即使处理失败

3
多选题

关于消费端的消息重试与降级策略,以下哪些做法是正确的?

A

在消费者内部维护重试计数器,超过阈值后拒绝消息

B

使用死信队列(DLX)存储多次重试失败的消息

C

消息重试时应使用指数退避策略避免瞬时重试风暴

D

消费端处理异常时应立即关闭连接,防止消息继续投递

4
填空题

消费者处理消息失败时,可以通过 basicNack 拒绝消息并设置 requeue=______ 使消息重新入队。为了避免无限重试,通常配合 ________ 实现有限次数的消息降级处理。

5
判断题

Publisher Confirm 机制中,生产者发布消息到交换机成功后,Broker 会异步发送确认消息给生产者,生产者可以通过 ConfirmCallback 处理确认或拒绝响应。

A

B

6
单选题

在 Publisher Confirm 机制中,生产者如何开启发布确认模式?

A

在队列声明时设置 confirm=true 参数

B

在信道(Channel)上调用 confirmSelect() 方法

C

在交换机声明时设置 confirm=true 参数

D

在连接(Connection)上调用 enableConfirm() 方法

7
多选题

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

A

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

B

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

C

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

D

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

8
填空题

在生产者中开启 Publisher Confirm 机制需要调用信道的 _____________ 方法。当消息成功到达交换机时,ConfirmCallback 会返回 ______ 状态;当消息未到达时返回 nack 状态。

9
简答题

请简述 Publisher Confirm 机制的完整工作流程,以及当收到 nack 确认时生产者应该如何处理。

10
判断题

Return 消息机制用于处理消息成功到达交换机但未能匹配到任何队列的情况,生产者需要设置 mandatory=true 才能触发 ReturnCallback。

A

B

11
单选题

ReturnCallback 回调中无法获取以下哪项信息?

A

消息的 routing_key

B

消息的 replyCode(返回码)

C

消息是否已被消费者确认

D

消息的 body 内容

12
多选题

关于 Return 消息机制,以下哪些说法是正确的?

A

Return 机制处理的是消息到达交换机但未匹配队列的场景

B

mandatory=true 是触发 ReturnCallback 的必要条件

C

ReturnCallback 中可以修改消息并重新发布

D

Return 机制可以替代 Publisher Confirm 机制

13
填空题

当消息到达交换机但未匹配到任何队列时,需要设置 mandatory=______ 才能触发 ______________ 将消息返回给生产者进行处理。

14
判断题

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

A

B

15
单选题

以下哪种方案最适合实现 RabbitMQ 消费端的消息去重?

A

依赖 Broker 的 message-id 自动去重

B

在消费端使用 Redis 存储已处理的消息 ID,处理前进行校验

C

将消息内容哈希后与消息体一起发送,Broker 自动去重

D

设置队列的 x-deduplicate 参数为 true

16
多选题

在消费端实现消息去重时,以下哪些做法是正确的?

A

使用消息的唯一 ID 作为去重键

B

将已处理的消息 ID 存储在带过期时间的 Redis 集合中

C

在处理消息前先检查去重缓存,命中则直接确认

D

消息去重缓存应该永久保留,永不删除

17
填空题

消费端消息去重通常使用消息的 ______ 作为去重键,在处理消息前通过查询 ________ (如 Redis)判断是否已处理,若已处理则直接确认消息。

18
简答题

请说明消费端消息去重的实现原理,以及在实际应用中需要考虑的关键因素(如缓存过期、并发处理等)。

19
判断题

实现消息端到端不丢失需要组合使用发布确认(Publisher Confirm)、消息持久化(Persistent)和消费者手动确认(Manual Ack)三种机制。

A

B

20
单选题

以下哪个选项不是实现消息端到端不丢失所必需的机制?

A

Publisher Confirm 机制

B

消息持久化(deliveryMode=2)

C

消费者手动确认(Manual Ack)

D

Fanout 交换机广播

← 上一个试卷 消息发送与接收专题测试
下一个试卷 → 消息序列化与格式专题测试

📝 发现内容有误?点击此处直接编辑

想参加完整模拟考试?
小程序提供计时考试、自动评分和详细解析

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库