消息重复消费如何引用的
- 在网络延迟传输中,会造成进行MQ的消息重试,在重试的过程中,可能会引用消息的重发消费
- 在客户端代码中,由于程序员大意,消息没有签收,或者事务没有提交等,都会有可能造成重发消费
重复消费的解决方案
方案一:
如果消息是做数据库的插入操作,那个给这个消息做个唯一主键,那么就散出现重复消费的情况,就会导致主键冲突,避免数据库出现脏数据。
方案二(推荐)
准备一个第三方服务来做消息记录,比如redis,给消息分配一个全局唯一的id,只要消费过该消息,将消息以 <id, message> K-V的形式存入redis,那么在消费者消费之前,去redis去查询该消息是否有消费记录,有消费记录,那么就不消费该消息。