业务中如何实现幂等性

2018-01-31  本文已影响0人  94nbiot

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

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

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

    评论:需要落库,比较重

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

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

3、利用集合的contains方法

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

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

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

上一篇下一篇

猜你喜欢

热点阅读