Spring-batch在执行之间共享数据

时间:2014-01-15 14:29:58

标签: spring-batch

我是Spring-batch的新手。我有一个简单的,概念验证的工作,可以做一些假的事。

ItemReader:获取dateA和最大日期之间的一些记录(此刻的最后一条记录) ItemProcessor:聚合每个城市的行 ItemWriter:将结果写入数据库

我的问题是,当作业完成时,我想保留最后一个日期,以便下一个作业从该日期开始作为dateA。我知道我可以使用JobExecutionContext来共享数据,但如果在第二次运行时,我试图获取dateA但值为null

有没有办法从先前的作业执行中记录以前的dateA值?怎么样?

提前致谢

2 个答案:

答案 0 :(得分:0)

有多种方法可以实现这一点。最简单的方法是将其写入文件并在下次启动时读取该文件。但这有点脏。您也可以在DB中编写它,或者只运行一个sql,它将从db中已有的数据返回最大日期。基本上我会实现一个简单的tasklet(类似Tasklet to delete a table in spring batch),它运行sql并在chunkContext上添加最大数据。

答案 1 :(得分:0)

以下可能是另一种选择。

使用JobExecutionListener #afterJob将日期存储在bean持有者中。以下链接回答了在步骤级别传递集合。

What's the best way to pass a huge collection to a Spring Batch Step?