Spring Batch重试(restart)原理

保存元数据的表
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
  • Job 实例
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

因为 该任务是定时任务,所以在当天特定时刻 再次执行同样参数的job 以便重启1号的job, 让其成功。

这个时候表中数据应该为:

batch_job_instance :不变,依然为当时的实例(参数没发生变化)
batch_job_execution :新增一条,start_time不变与上一次执行开始时间一致,end_time改变(为此次执行结束时间),status为完成 COMPLETED
batch_job_execution_params: 新增一条与上一条一模一样的记录

mark

注:图来自官网,因为官网的例子是定时任务,是在第二天同一时刻重启,重启成功后又开始当天的任务,所有有两个job_instance,相应的多出一条  execution 和 execution params
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值