使用 MQ 时,消息重复几乎不可避免。与其假设消息只会消费一次,不如从业务上支持幂等。
常见做法
1. 给每条业务消息设置唯一业务 ID。
2. 消费前先检查这个业务 ID 是否处理过。
3. 处理成功后记录消费结果。
4. 消费失败时允许有限重试。
重试次数怎么定
普通业务可以设置有限重试,例如 3 次。超过次数后进入死信队列或异常表,由人工或补偿任务处理。
小结
MQ 的重点不是完全避免重复,而是重复来了也不会造成重复扣款、重复发货、重复通知。业务幂等比盲目追求 exactly once 更现实。
正文完




