消息队列选型(Java 视角)

共 18 题
#

1. Kafka vs RabbitMQ vs RocketMQ 的吞吐量对比

A RabbitMQ 吞吐最高
B 三者吞吐相同
C 吞吐大致 Kafka > RocketMQ > RabbitMQ,源于日志追加与批处理 vs 逐条确认的架构差异 ✓ 正确答案
D RocketMQ 吞吐远低于 RabbitMQ
#

2. Kafka vs RabbitMQ vs RocketMQ 的消息可靠性

A 三者都只保证 once
B RocketMQ 不支持副本
C 三者都支持至少一次 + 持久化副本 + 消费 ack,配合幂等实现不丢不重,端到端都需三端配合 ✓ 正确答案
D 可靠性只靠 broker 端
#

3. Kafka vs RabbitMQ vs RocketMQ 的运维复杂度

A Kafka 运维最简单
B 运维复杂度大致 Kafka > RocketMQ > RabbitMQ,越大规模流式/功能越丰富运维越复杂 ✓ 正确答案
C 三者运维难度相同
D RabbitMQ 运维最复杂
#

4. Redis Stream 作为轻量消息队列的边界

A Stream 可承载海量历史
B Stream 吞吐与 Kafka 相当
C Stream 受内存限制、吞吐有限、持久化弱于专业 MQ,适合轻量场景,超出需求应迁移 Kafka/RocketMQ ✓ 正确答案
D Stream 支持延迟队列
#

5. Kafka、RocketMQ、RabbitMQ 三者在吞吐、可靠性、延迟与生态上的选型矩阵如何构建?

A 所有场景都选 Kafka
B 延迟与吞吐无关
C 生态不影响选型
D 按吞吐/可靠性/延迟/生态四维决策:大数据流用 Kafka,高吞吐+事务用 RocketMQ,灵活路由低延迟用 RabbitMQ ✓ 正确答案
#

6. Kafka 的日志语义,分区有序、消息追加与消费者组 rebalance 对 Java 消费端的影响如何?

A rebalance 不影响消费端
B rebalance 后无重复消费
C 分区内无序
D 分区内有序且可重放,rebalance 会中断消费并可能重复消费,Java 端需幂等、调优 poll 与监听 rebalance 回调 ✓ 正确答案
#

7. 自建 Kafka 集群与云托管 MQ(SQS/阿里云 RocketMQ)在成本、运维与 SLA 上的选型

A 云托管无法弹性伸缩
B 云托管一定更便宜
C 自建 SLA 更高
D 自建可控可定制但运维成本高,云托管省运维有高 SLA 但按量计费有锁定,按规模/运维能力/SLA 权衡 ✓ 正确答案
#

8. RocketMQ 的事务消息如何实现"本地事务+消息发送"原子性,与 Kafka 事务的差异?

A 两者都协调数据库
B Kafka 事务能保证数据库原子
C RocketMQ 用半消息+回查桥接业务本地事务,Kafka 事务协调 Kafka 内部跨分区/主题,都不介入数据库,跨系统需 Outbox ✓ 正确答案
D RocketMQ 事务消息无需回查
#

9. 消息队列选型的业务驱动(流处理/任务队列/事件溯源)

A 流处理适合 RabbitMQ
B 流处理要吞吐重放选 Kafka,任务队列要可靠路由选 RabbitMQ/RocketMQ,事件溯源要持久有序选 Kafka/Pulsar ✓ 正确答案
C 任务队列要高吞吐
D 事件溯源无需重放
#

10. ActiveMQ/Artemis(JMS 兼容)在既有 JMS 技术栈中的迁移成本与相比经典 ActiveMQ 的改进

A Artemis 不兼容 JMS
B Artemis 迁移需重写业务代码
C Artemis 比经典 ActiveMQ 性能更差
D Artemis 是 JMS 兼容的现代引擎,API 兼容迁移成本低,相比经典 ActiveMQ 改进性能、多协议与集群高可用 ✓ 正确答案
#

11. 消息积压的 Java 侧治理,消费限流、批量拉取、死信队列与重放如何配合?

A 死信会加重积压
B 积压无法治理
C 批量消费提升吞吐、限流保护下游、死信隔离失败消息、重放补齐积压,先监控 lag 定位原因 ✓ 正确答案
D 重放会丢失消息
#

12. Kafka vs RocketMQ 的事务消息,半消息与本地事务的时序、回查机制差异如何?

A 两者都有业务回查
B RocketMQ 事务消息无需半消息
C Kafka 事务也协调数据库
D RocketMQ 用半消息+回查桥接业务本地事务,Kafka 用事务协调器协调 Kafka 内部,无业务回查,跨系统需 Outbox ✓ 正确答案
#

13. 消息顺序的保证,Kafka 分区内有序 vs RocketMQ 队列内有序如何实现?

A 两者都保证全局有序
B Kafka 分区内有序靠日志追加+单消费者,RocketMQ 靠 MessageListenerOrderly 加锁,跨分区/队列不保证全局有序 ✓ 正确答案
C RocketMQ 天然有序无需监听器
D 跨队列有序由 MQ 保证
#

14. MQ 的削峰填谷与异步解耦适用边界,哪些场景不适合引入消息队列

A 所有场景都适合引入 MQ
B MQ 不增加复杂度
C MQ 适合削峰填谷与异步解耦,但强一致/实时返回/小数据量场景引入 MQ 成本大于收益不宜使用 ✓ 正确答案
D 强一致场景适合 MQ
#

15. 消息堆积的治理,消费者扩容、批量消费、死信处理与监控指标如何?

A 扩容消费者一定解决所有堆积
B 堆积只能靠重启
C 消费者扩容/批量消费提升吞吐,死信隔离失败消息,监控 lag 与消费速率定位原因,指标驱动治理 ✓ 正确答案
D 死信处理与堆积无关
#

16. RocketMQ 的延迟消息/定时消息在 Java 场景的实现原理与精度限制?

A 延迟消息基于离散延迟级别(18 级)与定时扫描,精度受级别与扫描间隔限制,5.x 支持任意定时但非毫秒级 ✓ 正确答案
B 延迟级别可任意指定秒数
C 延迟消息精度到毫秒
D 延迟消息无需 broker 调度
#

17. 延迟消息的实现,RocketMQ 延迟级别 vs Kafka 时间轮的差异如何?

A 两者都精确到毫秒
B 时间轮只能离散延迟
C RocketMQ 支持任意精确延迟
D RocketMQ 延迟级别是离散的定时扫描,Kafka 时间轮分层哈希轮支持任意时间的精确延迟调度 ✓ 正确答案
#

18. Apache Pulsar 的分层存储(Segment 与 BookKeeper)与 Kafka 的架构差异

A 两者都存储计算耦合
B Pulsar 与 Kafka 架构相同
C Pulsar 用 BookKeeper 分段存储并存储计算分离,支持分层存储与弹性扩展,Kafka 是耦合的本地日志 ✓ 正确答案
D Pulsar 数据无法长期保留