工作队列模式专题
专题说明
本专题围绕 RabbitMQ 工作队列模式展开,涵盖任务分发、消息确认、队列持久化、公平调度等核心知识点,通过 13 道精选题目帮助学习者全面掌握工作队列的实际应用。
学习目标
- 理解工作队列模式的设计思想与适用场景
- 掌握消息持久化与消费者确认机制的配置方法
- 能够实现公平分发与轮询分发的任务处理系统
学习建议
入门阶段建议先理解核心概念,再动手实践。
📝 发现内容有误?点击此处直接编辑
本专题围绕 RabbitMQ 工作队列模式展开,涵盖任务分发、消息确认、队列持久化、公平调度等核心知识点,通过 13 道精选题目帮助学习者全面掌握工作队列的实际应用。
入门阶段建议先理解核心概念,再动手实践。
📝 发现内容有误?点击此处直接编辑
在 RabbitMQ 的工作队列模式中,多个消费者可以同时连接到同一个队列,共同消费队列中的消息,且每条消息只会被其中一个消费者处理。
在 RabbitMQ 工作队列模式中,生产者将消息发送到队列后,以下关于消息消费的描述正确的是:
A. 队列中的消息会被复制多份,每个消费者都能收到 B. 队列中的消息按顺序依次投递给不同的消费者,每条消息只会被一个消费者处理 C. 消息会同时投递给所有消费者,由消费者自行协商谁来处理 D. 消息只有在第一个消费者处理完成后才会投递给第二个消费者
在工作队列模式中,为了控制消费者一次接收的消息数量,可以通过 _______.________(______) 方法来设置预取值(prefetch count),确保消费者在处理完当前消息前不会接收新消息。
在 RabbitMQ 工作队列模式中,如果消费者处理消息需要较长时间(如模拟耗时任务),以下关于消息确认(acknowledgment)的描述正确的是:
A. 消息一经投递就自动确认,与处理时间无关 B. 消费者必须在处理完成后手动发送确认,否则消息会重新入队 C. 处理耗时任务时,消息会一直保留在队列中直到消费者确认 D. 耗时任务的确认超时时间由 RabbitMQ 服务器自动设定,消费者无法控制
在工作队列模式中,如果一个消费者处理消息耗时很长且在此期间断开连接,该消息会丢失,不会重新投递给其他消费者。
为了确保工作队列中的消息在 RabbitMQ 服务器重启后不会丢失,需要在声明队列时将 durable 参数设置为 ______,这样队列本身会被持久化到磁盘。同时,发送消息时需要将消息的 deliveryMode 属性设置为 ______,表示消息内容也需要持久化。
在 RabbitMQ 工作队列模式中,默认的消息分发策略是轮询分发(Round-Robin)。关于轮询分发的特点,以下描述正确的是:
A. 根据消费者的处理速度动态调整分发比例,处理快的消费者接收更多消息 B. 按顺序依次将消息分发给每个消费者,不考虑消费者的处理速度差异 C. 将消息优先分发给当前空闲的消费者,等待其处理完成后才分发给下一个 D. 根据消费者上次接收消息的时间间隔,智能选择下一个消费者
在工作队列模式中,预取值(prefetch count)用于实现公平分发机制。如果将预取值设置为 5,以下描述正确的是:
A. 每个消费者最多只能接收 5 条消息,之后不再接收任何消息 B. 每个消费者最多只能有 5 条未确认的消息,确认一条后才能再接收新消息 C. 队列中最多只能有 5 条消息等待分发,其余消息会被暂存 D. 每个消费者一次只能批量接收 5 条消息,必须一次性确认
在工作队列模式中,关于轮询分发(Round-Robin)和公平分发(Fair Dispatch)的对比,以下说法正确的有:
A. 轮询分发不考虑消费者的处理能力,消息均匀分配给所有消费者 B. 公平分发通过设置预取值实现,处理快的消费者会接收更多消息 C. 轮询分发在处理速度差异较大的场景下可能导致消息积压 D. 公平分发需要设置 autoAck=true 才能生效
在 RabbitMQ 中,如果将预取值(prefetch count)设置为 ______,表示消费者每次可以接收无限制数量的消息,此时 RabbitMQ 会将队列中所有待投递的消息一次性推送给该消费者,可能导致消费者内存溢出。
在工作队列模式中,如果开启了自动确认模式(autoAck=true),预取值(prefetch count)的设置将不会生效,因为消息在投递后立即被确认,RabbitMQ 无法追踪消费者的实际处理能力。
假设有一个工作队列,有两个消费者 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 各收到一半的消息
在RabbitMQ工作队列中,实现公平分发需要在消费者订阅队列前调用_________________2_prefetchCount!!)方法设置预取值,其中_____________参数通常设置为______以实现最严格的公平策略,且消费者必须使用______消息确认模式。
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验