你们项目中如何使用幂等性处理的

在程序开发中,幂等性是指同一个业务,执行一次或多次对业务状态的影响是一致的。例如:

- 根据id删除数据
- 查询数据
- 新增数据

但数据的更新往往不是幂等的,如果重复执行可能造成不一样的后果。
- 取消订单,恢复库存的业务。如果多次恢复就会出现库存重复增加的情况
- 退款业务。重复退款对商家而言会有经济损失。

为了保证消息处理的幂等性。这里给出两种方案:
- 唯一消息ID
- 业务状态判断


### 唯一消息ID
1. 每一条消息都生成一个唯一的id,与消息一起投递给消费者。
2. 消费者接收到消息后处理自己的业务,业务处理成功后将消息ID保存到数据库
3. 如果下次又收到相同消息,去数据库查询判断是否存在,存在则为重复消息放弃处理。

###业务判断就是
于业务本身的逻辑或状态来判断是否是重复的请求或消息,不同的业务场景判断的思路也不一样。
项目中,处理消息的业务逻辑是把订单状态从未支付修改为已支付。因此我们就可以在执行业务时判断订单状态是否是未支付,如果不是则证明订单已经被处理过,无需重复处理。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值