保存元数据的表
batch_job_execution
batch_job_execution_context
batch_job_execution_params
batch_job_execution_seq
batch_job_instance
batch_job_seq
batch_step_execution
batch_step_execution_context
batch_step_executon_seq
restart会用到的三张表
batch_job_instance 实例ID 和 job 名字
batch_job_execution job执行情况
batch_job_execution_params job每次执行启动的参数
JobInstance
spring batch 通过 job id 和 启动参数 来唯一确定一个job 实例
如果同一个job 启动参数有变化,会重新创建一个job实例。
参数没有变化,job重新启动,重新创建一个 jobExection 记录执行情况。
JobParameters
- Job 启动参数:用来唯一确定一个 jobInstance
JobExecution
- Job 执行情况:记录每个jobInstance的每次执行情况
restart 实例 表数据的变化
重启一个失败的job ,让job 能够最终完成。
系统要重启某个特定失败的job, 得从batch_job_execution_params 查到当时的参数,以此为依据启动job。
假设日终处理_结息任务,在6月1号晚上10点开始,10:30前结束,但是job 失败了
此时表中数据应该是:
batch_job_instance :有一个名字为 日终处理_结息任务的Job 实例。(一条记录)
batch_job_execution :有个开始时间为 XXXX-06-01 22:00 结束时间为XXXX-06-01 22:30 状态为 FAILED 的执行情况记录。(一条记录)
batch_job_execution_params: 该失败实例的第一次执行的参数。
![mark](http://ox0rewbep.bkt.clouddn.com/blog/180701/a940g8eEBk.png?imageslim)
因为 该任务是定时任务,所以在当天特定时刻 再次执行同样参数的job 以便重启1号的job, 让其成功。
这个时候表中数据应该为:
batch_job_instance :不变,依然为当时的实例(参数没发生变化)
batch_job_execution :新增一条,start_time不变与上一次执行开始时间一致,end_time改变(为此次执行结束时间),status为完成 COMPLETED
batch_job_execution_params: 新增一条与上一条一模一样的记录
![mark](http://ox0rewbep.bkt.clouddn.com/blog/180701/1ihIcIJ639.png?imageslim)
注:图来自官网,因为官网的例子是定时任务,是在第二天同一时刻重启,重启成功后又开始当天的任务,所有有两个job_instance,相应的多出一条 execution 和 execution params