我们有一个批处理作业,我们每1小时运行一次。如果批处理作业运行的时间超过50分钟,我们将终止当前的执行。
如果批处理完成并正常退出,则一切正常,并且在下一批处理中,getPage()返回的值为0。但是如果我们终止了长时间运行的批处理,那么在下一个批处理中,getPage()的值是1而不是0。
弹簧是否在批次之间存储值?上下文保存在哪里?
发布于 2017-04-26 12:22:08
在使用有状态ItemReader实现(实现ItemStream接口的实现)时,读取器的状态在ExecutionContext中持久化,随后在BATCH_STEP_EXECUTION_CONTEXT或BATCH_JOB_EXECUTION_CONTEXT表中持久化。
您可以在此处的文档中阅读有关ExecutionContext的更多信息:http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/ExecutionContext.html
您还可以在此处阅读有关Spring Batch中的状态管理的内容:https://docs.spring.io/spring-batch/reference/htmlsingle/#domainExecutionContext
https://stackoverflow.com/questions/43623783
复制相似问题