业务中如何实现幂等性

在消息处理中经常需要考虑到消息重复发送了怎么办?

这个时候需要做幂等处理,也就是一个消息只能被消费一次,那如何判断一个消息已经被消费了呢?

1、利用类似mysql这种具有唯一性约束的数据库机制

    评论:需要落库,比较重

2、消费消息的时候,先根据唯一key值做一次select,有则不用消费,没有则消费

    评论:select不一定是从关系型数据库中获取

3、利用集合的contains方法

    评论:分布式环境下可以借助redis来实现,存在网络消耗,且集合的大小需要确定一个固定大小,或者设计成一个队列,

    分布式网络环境下,如何本地缓存实现去重?

4、利用分布式缓存(如redis),做已处理标识位,每次处理消息的时候都去check一下



作者:94nbiot
链接:https://www.jianshu.com/p/e1d421b7684b
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值