我是Spring-batch的新手。我有一个简单的,概念验证的工作,可以做一些假的事。
ItemReader:获取dateA和最大日期之间的一些记录(此刻的最后一条记录) ItemProcessor:聚合每个城市的行 ItemWriter:将结果写入数据库
我的问题是,当作业完成时,我想保留最后一个日期,以便下一个作业从该日期开始作为dateA。我知道我可以使用JobExecutionContext来共享数据,但如果在第二次运行时,我试图获取dateA但值为null
有没有办法从先前的作业执行中记录以前的dateA值?怎么样?
提前致谢
答案 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?