如何保证消息不被重复消费
MQ能保证的是消息至少保证消息能被消费者成功消费一次
正是因为这种特性,MQ就很难避免消息重复消费问题
本身消息投递的可靠性要比我们重复消费的优先级更高,所以一般防重问题都是交给我们应用本身去实现的。这也就是为什么RocketMQ文档中强调:消费逻辑需要自我实现幂等。
其实重复消费不可怕,可怕的是你没考虑到重复消费之后,怎么保证幂等性。
幂等性是指同一个操作在多次执行中产生的结果是相同的。可以通过在应用程序中设计幂等性来解决MQ重复消费问题。例如,为每个消息分配一个唯一标识符,应用程序在消费消息时检查该消息是否已经被处理过,如果已经处理过则直接忽略。
真实的业务场景各式各样,大家可以举一反三,在实际应用中需要结合具体的业务来看。