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

工作队列模式专题测试

13 题 30 分钟 难度:★

考察知识点

  • 工作队列模式基本概念
  • RabbitMQ 工作队列实践
💡 参考答案在文末
判断题
1

在工作队列模式中,如果一个消费者处理消息耗时很长且在此期间断开连接,该消息会丢失,不会重新投递给其他消费者。

A

B

2

在工作队列模式中,如果开启了自动确认模式(autoAck=true),预取值(prefetch count)的设置将不会生效,因为消息在投递后立即被确认,RabbitMQ 无法追踪消费者的实际处理能力。

A

B

3

在 RabbitMQ 的工作队列模式中,多个消费者可以同时连接到同一个队列,共同消费队列中的消息,且每条消息只会被其中一个消费者处理。

A

B

单选题
4

在 RabbitMQ 工作队列模式中,默认的消息分发策略是轮询分发(Round-Robin)。关于轮询分发的特点,以下描述正确的是:

A

根据消费者的处理速度动态调整分发比例,处理快的消费者接收更多消息

B

按顺序依次将消息分发给每个消费者,不考虑消费者的处理速度差异

C

将消息优先分发给当前空闲的消费者,等待其处理完成后才分发给下一个

D

根据消费者上次接收消息的时间间隔,智能选择下一个消费者

5

在 RabbitMQ 工作队列模式中,如果消费者处理消息需要较长时间(如模拟耗时任务),以下关于消息确认(acknowledgment)的描述正确的是:

A

消息一经投递就自动确认,与处理时间无关

B

消费者必须在处理完成后手动发送确认,否则消息会重新入队

C

处理耗时任务时,消息会一直保留在队列中直到消费者确认

D

耗时任务的确认超时时间由 RabbitMQ 服务器自动设定,消费者无法控制

6

在工作队列模式中,预取值(prefetch count)用于实现公平分发机制。如果将预取值设置为 5,以下描述正确的是:

A

每个消费者最多只能接收 5 条消息,之后不再接收任何消息

B

每个消费者最多只能有 5 条未确认的消息,确认一条后才能再接收新消息

C

队列中最多只能有 5 条消息等待分发,其余消息会被暂存

D

每个消费者一次只能批量接收 5 条消息,必须一次性确认

7

在 RabbitMQ 工作队列模式中,生产者将消息发送到队列后,以下关于消息消费的描述正确的是:

A

队列中的消息会被复制多份,每个消费者都能收到

B

队列中的消息按顺序依次投递给不同的消费者,每条消息只会被一个消费者处理

C

消息会同时投递给所有消费者,由消费者自行协商谁来处理

D

消息只有在第一个消费者处理完成后才会投递给第二个消费者

多选题
8

在工作队列模式中,关于轮询分发(Round-Robin)和公平分发(Fair Dispatch)的对比,以下说法正确的有:

A

轮询分发不考虑消费者的处理能力,消息均匀分配给所有消费者

B

公平分发通过设置预取值实现,处理快的消费者会接收更多消息

C

轮询分发在处理速度差异较大的场景下可能导致消息积压

D

公平分发需要设置 autoAck=true 才能生效

9

假设有一个工作队列,有两个消费者 C1 和 C2,其中 C1 处理每条消息需要 1 秒,C2 需要 5 秒。以下关于不同分发策略下消息分配情况的描述,正确的有:

A

使用轮询分发时,C1 和 C2 各收到一半的消息

B

使用轮询分发时,C2 可能会因为处理速度慢而导致消息在其内部积压

C

使用公平分发并设置 prefetch=1 时,C1 会处理约 5/6 的消息,C2 处理约 1/6

D

使用公平分发并设置 prefetch=1 时,C1 和 C2 各收到一半的消息

填空题
10

为了确保工作队列中的消息在 RabbitMQ 服务器重启后不会丢失,需要在声明队列时将 durable 参数设置为 ____________,这样队列本身会被持久化到磁盘。同时,发送消息时需要将消息的 deliveryMode 属性设置为 ____________,表示消息内容也需要持久化。

11

在工作队列模式中,为了控制消费者一次接收的消息数量,可以通过 ____________.____________(____________) 方法来设置预取值(prefetch count),确保消费者在处理完当前消息前不会接收新消息。

12

在 RabbitMQ 中,如果将预取值(prefetch count)设置为 ____________,表示消费者每次可以接收无限制数量的消息,此时 RabbitMQ 会将队列中所有待投递的消息一次性推送给该消费者,可能导致消费者内存溢出。

13

在RabbitMQ工作队列中,实现公平分发需要在消费者订阅队列前调用____________(____________)方法设置预取值,其中____________参数通常设置为1以实现最严格的公平策略,且消费者必须使用手动消息确认模式。

参考答案
1.错误 2.正确 3.正确 4.B 5.B 6.B 7.B 8.A;B;C 9.A;B;C 10.true;2 11.channel;basicQos;1 12.0 13.channel.basicQos;prefetchCount;prefetchCount
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 安全与权限控制专题测试
下一套试卷 → 底层原理与架构专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码