消息幂等通用解决方案
消息中间件是分布式系统常用的组件无论是异步化、解耦、削峰等都有广泛的应用价值。我们通常
会认为消息中间件是一个可靠的组件 这里所谓的可靠是指只要我把消息成功投递到了消息中
间件消息就不会丢失即消息肯定会至少保证消息能被消费者成功消费一次这是消息中间件最基
本的特性之一也就是我们常说的 即消息至少会被 成功消费一遍 。
举个例子一个消息 发送到了消息中间件消息投递到了消费程序 接受到了消息然后进行消
费但在消费到一半的时候程序重启了这时候这个消息并没有标记为消费成功这个消息还会继续
投递给这个消费者直到其消费成功了消息中间件才会停止投递。
然而这种可靠的特性导致消息可能被多次地投递。举个例子还是刚刚这个例子程序 接受到这
个消息 并完成消费逻辑之后正想通知消息中间件 我已经消费成功了 的时候程序就重启了那
么对于消息中间件来说这个消息并没有成功消费过所以他还会继续投递。这时候对于应用程序
来说看起来就是这个消息明明消费成功了但是消息中间件还在重复投递。
这在 的场景来看就是同一个 的消息重复投递下来了。