探寻用户自定义定时任务的实践方案(3)

2023-05-03 来源:飞速影视

任务创建


探寻用户自定义定时任务的实践方案


将业务任务执行和停止与作业任务创建和失效关联,达到用户自定义定时任务的初衷,作业任务完全由用户决定。

任务加载


探寻用户自定义定时任务的实践方案


任务加载使用 j.u.c 提供的定时任务线程池 ScheduledThreadPoolExecutor 的 scheduleAtFixedRate 方法,周期性的触发任务的加载,保证缓存中任务的及时更新。不同的是用户自定义任务一般都是提前创建好的,不需要不间断的去查询,而且可以通过开始和结束时间双重保证任务正确触发。
注册任务部分逻辑:
//获取全部任务列表defineList更新任务 defineList.forEach(t -> { String key = t.getBeanName() t.getBusId(); val task = TaskDefinitions.registered(key); //没有(并且有效),就添加 if (task == null) { if (t.getValid()) { TaskDefinitions.registerTask(new ScheduleTask(t)); changedList.add(t); } } //有,就替换定义 else { boolean changed = task.updateDefine(t); if (changed) { changedList.add(t); } } }); //打印变化的任务日志}//ScheduleTask任务定义,updateDefine这个对象的属性public class ScheduleTask { private long id; private TaskScheduleDefine localScheduleDefine; private CronSequenceGenerator cronGenerator; public ScheduleTask(TaskScheduleDefine taskScheduleDefine) { this.id = taskScheduleDefine.getId(); this.localScheduleDefine = taskScheduleDefine; }}
相关影视
合作伙伴
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)

www.fs94.org-飞速影视 粤ICP备74369512号