定时任务从数据库加载
2017-03-28 10:33:00 0 举报
AI智能生成
定时任务从数据库加载是指将需要执行的任务信息预先存储在数据库中,然后通过定时任务程序定期从数据库中读取任务信息并执行相应的操作。这种方式可以方便地对任务进行管理和调度,同时也可以避免手动修改任务信息的麻烦。例如,我们可以使用Spring框架中的@Scheduled注解来实现定时任务的自动加载和执行。此外,我们还可以使用Quartz、Celery等开源工具来帮助我们实现更加复杂和灵活的定时任务调度。总之,定时任务从数据库加载是一种高效、可靠且易于管理的任务调度方式,值得在实际项目中广泛应用。
作者其他创作
大纲/内容
Trigger_Job(TS_TRIGGER_JOBS)
id
主键
默认的配置文件需要添加id
jobDetail
jobName
用于生成jobKey
jobGroup
用于生成jobKey
jobClassName
类名
添加唯一约束
jobDescription
描述业务类信息
jobData
cronTrigger
triggerName
用于生成triggerKey
triggerGroup
用于生成triggerKey
conExpression
cron表达式
createDate
创建时间
modifyDate
修改时间
需要创建开关 flag 1 是打开 0 是关闭 默认0
(Ts_Trigger_Logs)TriggerLog
triggerJobId
job 主键 作为外键
id
主键
preFireTime
nextFireTime
startTime
endTime
triggerData
trigger 创建信息
createDate
日志创建时间
modifyDate
修改时间
log 在任务执行之前插入
任务之后修改
任务之后修改
插入的时候主要是 id job id 以及
当前触发时间 下一次触发时间 任务开始时间
任务结束时间 triggerData以及 创建 时间 修改时间
当前触发时间 下一次触发时间 任务开始时间
任务结束时间 triggerData以及 创建 时间 修改时间
修改 主要是根据id修改data 以及修改时间
日志插入1条记录
1 次插入 1次修改
插入2次是可以的 可以从中看到其中执行的时间
初始化过程
1 SchedulerInitialize init build
a 从库里面获取所有的trigger_jobs
b 遍历jobs
c 通过反射生成jobDetail
d 生成cronTrigger
e jobDetail判断
f jobDetail 中的JobDataMap放入triggerJobId
这个id就是数据库中设置的triggerJob.id
g 根据jobDetail和cronTrigger 设置调度Job
h 调度任务定时启动 schedule.start()
子主题
使用定时任务过程
1 实现类添加注解 防止并发运行
2 实现类实现Job execute中包含context
3 context中获取trigger 然后获取triggerJobId
4 插入日志
5 执行业务代码
6 执行修改日志
同时需要创建 页面入口
子主题
子主题
加载过程
先加载配置文件 默认的
然后加载 数据库
数据库加载 异常 去默认的
数据库加载正常 ,优先 取数据库的 没有 就 取配置文件的
格式要求很严格
取 并集 优先从DB中获取
DB List
default Map
遍历list 看Map是否包含 如果存在 map 替换 不存在 map 添加
有可能数据库比较多 约定
有可能配置文件多 默认取配置文件 然后从DB优先级中获取
以map为基础 遍历DB list map 中如果包含就替换 map中没有就存储
list 中存在就替换 不存在 就存入 就是不管存不存在都进行放入操作
然后取出values
list 中存在就替换 不存在 就存入 就是不管存不存在都进行放入操作
然后取出values
记录日志主键 需要关联的job_class_name 而不是id
job_class_name是逻辑主键 job_id是物理主键 这个如果修改 可以放在最后进行修改
需要修改表结构
处于目的 就是在配置文件添加id的时候不是很好添加
也可以使用
0 条评论
下一页