Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Redis 怎样实现消息队列?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

简单队列可用 List。需要记录消息、消费组、确认与重领时,优先考虑 Streams。Pub/Sub 适合在线通知,断线期间的消息不会补送。

讲清原理

Streams 消费组读到消息后记录待确认。处理成功再 XACK。消费者挂掉可用 XAUTOCLAIM 重领闲置的待确认项,重复执行要靠业务幂等。

消息投递、待确认和重领分属不同阶段
消息投递、待确认和重领分属不同阶段

例子与易错点

异步生成报表时让任务 ID 唯一,并监控未确认任务和积压。设置裁剪策略前,确认不会提前删掉仍需处理的内容。

使用显式消息 ID 演示投递、待确认与确认。

XADD q47:jobs 1-0 kind report
XGROUP CREATE q47:jobs workers 0-0
XREADGROUP GROUP workers worker-1 COUNT 1 STREAMS q47:jobs >
XACK q47:jobs workers 1-0

相关题 · 第 48 题、第 63 题

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。