Spring 数据库支持的批处理执行状态
Spring Batch Execution Status Backed by Database
For starters, the @EnableBatchProcessing annotation adds many critical
beans that support jobs and saves you a lot of leg work. This example
uses a memory-based database (provided by @EnableBatchProcessing),
meaning that when it’s done, the data is gone.
如何使执行状态由数据库(或其他一些持久记录支持,以便万一应用程序崩溃,作业从以前的状态恢复?
到目前为止,我的解决方案是让我的 ItemReader
成为一个 JdbcCursorItemReader
,它从 table 的列 X
中读取记录NULL
,而我的 ItemWriter
是一个 JdbcBatchItemWriter
,它 使用列 X
上的数据更新记录,使得它是非空的(这样它就不会在下一次执行时被选中)。然而,这看起来真的很 hackish,我相信有一种更优雅的方法。谁能解释一下?
使用 @EnableBatchProcessing
注释时,如果您提供一个名为 dataSoure
的 DataSource
bean 定义,Spring Batch 将使用该数据库存储作业存储库,而不是内存映射。您可以在此处的文档中阅读有关此功能的更多信息:http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/configuration/annotation/EnableBatchProcessing.html
For starters, the @EnableBatchProcessing annotation adds many critical beans that support jobs and saves you a lot of leg work. This example uses a memory-based database (provided by @EnableBatchProcessing), meaning that when it’s done, the data is gone.
如何使执行状态由数据库(或其他一些持久记录支持,以便万一应用程序崩溃,作业从以前的状态恢复?
到目前为止,我的解决方案是让我的 ItemReader
成为一个 JdbcCursorItemReader
,它从 table 的列 X
中读取记录NULL
,而我的 ItemWriter
是一个 JdbcBatchItemWriter
,它 使用列 X
上的数据更新记录,使得它是非空的(这样它就不会在下一次执行时被选中)。然而,这看起来真的很 hackish,我相信有一种更优雅的方法。谁能解释一下?
使用 @EnableBatchProcessing
注释时,如果您提供一个名为 dataSoure
的 DataSource
bean 定义,Spring Batch 将使用该数据库存储作业存储库,而不是内存映射。您可以在此处的文档中阅读有关此功能的更多信息:http://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/configuration/annotation/EnableBatchProcessing.html