XXL-JOB 行锁

调度中心支持多节点部署,基于数据库行锁,保证触发器的名称和执行时间相同,则只且仅有一个调度中心节点去下发任务给执行器。

核心代码可见 XXL-JOB 的 JobScheduleHelper#start() 方法:

// JobScheduleHelper.java

// 获得行锁
conn = XxlJobAdminConfig.getAdminConfig().getDataSource().getConnection();
connAutoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
preparedStatement = conn.prepareStatement(  "select * from xxl_job_lock where lock_name = 'schedule_lock' for update" );
preparedStatement.execute();

// ...触发任务调度

// 事务提交
conn.commit();
posted @ 2020-07-29 11:00  ytsee  阅读(321)  评论(0)    收藏  举报