概述Redis Stream支持消费组与消息确认, 可实现多消费者并行处理与故障转移。结合幂等键与处理状态记录, 在重复投递或重试场景下保证一次且仅一次的业务效果。关键实践与参数组管理: `XGROUP CREATE` `XGROUP SETID` 维护游标读取与确认: `XREADGROUP` 消费 `>` 游标, 使用 `XACK` 确认幂等键: 以业务ID或事件ID构造去重键, TTL合理设置待处理队列: `XPENDING` 观测未确认消息并再分配重试策略: 控制最大重试次数与再分配间隔示例/配置/实现redis-cli XGROUP CREATE mystream groupA $ MKSTREAM redis-cli XADD mystream * order_id 1001 redis-cli XREADGROUP GROUP groupA consumer1 COUNT 10 STREAMS mystream > redis-cli XACK mystream groupA 1607519490000-0 local k = KEYS[1] local id = ARGV[1] local ok = redis.call('SET', k..':'..id, 1, 'NX', 'EX', 600) return ok 验证重复消息: 重放相同事件ID, 幂等键拦截并不执行副作用故障恢复: 终止消费者并在另一消费者上 `XPENDING` 再分配处理吞吐与延迟: 在并发消费者下记录处理速率与确认延迟游标一致性: 组游标与业务处理进度保持一致, 无消息遗漏注意事项幂等键需稳定可复现, TTL结合业务回溯窗口定期清理死信或长时间未确认消息处理逻辑需幂等与可重入, 保证失败重试安全监控 `pending` 增长触发告警与再分配机制

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
2.016886s