定时job如何做并发控制,保证只有一台服务器执行?
我们项目使用的是乐观锁。
首先每条job都会配置在数据库中,初始状态是N,如果有job开始跑了,会先把状态置为Y。
并发场景我们是这样考虑的,拿预期值和修改值去更新这条数据,sql是这样的:
update job_table jt
set
jt.status = 'Y',
jt.update_date = sysdate
where
jt.job_code = 'job_a_code' and
jt.status = 'N'
网友评论