码迷,mamicode.com
首页 > 其他好文 > 详细

怎么保证消息的幂等性

时间:2020-12-24 11:54:26      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:出现   直接   消费者   一个   生产者   ack   str   获取   网络   

怎么保证消息的幂等性

出现非幂等性的情况

  • 1、生产者已把消息发送到mq,在mq给生产者返回确认消息的时候网络中断,故生产者未收到确定信息,生产者认为消息未发送成功,但实际情况是,mq已成功接收到了消息,在网络重连后,生产者会重新发送刚才的消息,造成mq接收了重复的消息
  • 2、消费者在消费mq中的消息时,mq已把消息发送给消费者,消费者在给mq返回ack时网络中断,故mq未收到确认信息,该条消息会重新发给其他的消费者,或者在网络重连后再次发送给该消费者,但实际上该消费者已成功消费了该条消息,造成消费者消费了重复的消息;

解决思路

  • 1.消息发送者发送小弟时携带一个全局唯一的消息id
  • 2.消费者获取消费后先根据id在redis/db中查询是否存在消费记录。
  • 3.如果没有消费过就正常消费,消费完毕后写入redis/db
  • 4.如果消息消费过就直接舍弃

怎么保证消息的幂等性

标签:出现   直接   消费者   一个   生产者   ack   str   获取   网络   

原文地址:https://www.cnblogs.com/dalianpai/p/14159969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!