摘要:消息队列(MQ)是分布式系统的基石,但“至少一次投递”的语义决定了消息重复是常态,幂等是必须。本文从重复消费的根源出发,深入剖析三种常见幂等策略(消费记录表、Redis+DB、数据库唯一索引)的适用场景与陷阱,并提供一套可落地的选型指南。
一、“至少一次投递”
在生产环境中,我们几乎不可能保证消息“只被消费一次”。更常见的语义是 “至少一次投递(At Least Once)”,即消息可能被重复投递,消费者必须自行保证幂等性——多次消费同一条消息,最终的业务影响与消费一次完全相同。
2026/8/16...大约 9 分钟