基于数据库悲观锁的幂等性控制

在分布式环境中,确保任务幂等性至关重要。本文介绍了通过数据库悲观锁来控制任务,防止重复执行。详细步骤包括:根据全局业务流水号查询记录,检查是否存在任务;若无任务则创建,有任务则检查状态,已成功或处理中则拒绝,失败且可重试则更新任务状态并重新执行。最后,任务会更新为成功或失败的最终状态。
摘要由CSDN通过智能技术生成

分布式环境下,各个服务经常需要互相调用,如何保证调用的任务只被执行一次?本章基于数据的悲观锁,实现了任务的幂等性控制。

幂等性:多次执行所产生的影响均与一次执行的影响相同。比如在一次支付场景中,无论你点击多少次按钮,最终都应该只有一次扣款行为。


1. 根据全局业务流水号businessId查询数据库记录

IdempotentTask taskResult = idempotentTaskMapper.selectByBusinessId(businessId);

2. 判断之前是否有任务存在,如果不存在,本次任务落库。并发情况下也只会有一条写入成功

if (taskResult == null){
	IdempotentTask task = new IdempotentTask();
	task.setBusinessId(businessId);
	task.setCreated(new Date());
	task.setModified(new Date());
	
	/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值