在消息处理中经常需要考虑到消息重复发送了怎么办?
这个时候需要做幂等处理,也就是一个消息只能被消费一次,那如何判断一个消息已经被消费了呢?
1、利用类似mysql这种具有唯一性约束的数据库机制
评论:需要落库,比较重
2、消费消息的时候,先根据唯一key值做一次select,有则不用消费,没有则消费
评论:select不一定是从关系型数据库中获取
3、利用集合的contains方法
评论:分布式环境下可以借助redis来实现,存在网络消耗,且集合的大小需要确定一个固定大小,或者设计成一个队列,
分布式网络环境下,如何本地缓存实现去重?
4、利用分布式缓存(如redis),做已处理标识位,每次处理消息的时候都去check一下
作者:94nbiot
链接:https://www.jianshu.com/p/e1d421b7684b
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。