Spring batch Spring批处理在执行之间共享数据
我是新来的春药。我有一个简单的,概念证明的工作,它做一些虚假的事情 ItemReader:获取当前dateA和max date last记录之间的大量记录 ItemProcessor:聚合每个城市的行 ItemWriter:将结果写入数据库 我的问题是,当作业完成时,我希望保留最后一个日期,以便下一个作业执行从该日期开始,即dateA。我知道我可以使用JobExecutionContext共享数据,但如果在第二次运行时,我尝试获取dateA,但该值为null 是否有方法获取上一次作业执行记录的上一个日期a值?怎么做Spring batch Spring批处理在执行之间共享数据,spring-batch,Spring Batch,我是新来的春药。我有一个简单的,概念证明的工作,它做一些虚假的事情 ItemReader:获取当前dateA和max date last记录之间的大量记录 ItemProcessor:聚合每个城市的行 ItemWriter:将结果写入数据库 我的问题是,当作业完成时,我希望保留最后一个日期,以便下一个作业执行从该日期开始,即dateA。我知道我可以使用JobExecutionContext共享数据,但如果在第二次运行时,我尝试获取dateA,但该值为null 是否有方法获取上一次作业执行记录的上
提前感谢有多种方法可以实现这一点。最简单的方法就是将其写入文件,然后在下一次启动时读取该文件。但这有点脏。您也可以在DB中写入它,或者只运行sql,从DB中已有的数据返回最大日期。基本上,我将实现一个简单的TaskletSimple,它运行sql并在chunkContext上添加max数据 以下可能是一种替代方案 使用JobExecutionListenerafterJob将日期存储在bean持有者中。以下链接回答在步骤级别传递集合的问题
您好,谢谢您的回复。问题是数据已经存在,是否有一种适当的方法可以从上一次作业执行中获取已更新的值?只需实现一个简单的tasklet,如下所示:它运行返回最大日期的sql并将其添加到ChunkContext上,这是一种很好的方法。我想知道是否应该实现一个列表器,并添加像beforeJob这样的东西来检索值,以及afterJob来为下一个操作保留新值。我的问题是,这是否属于同一笔交易?写操作?关于交易的thxidk;我更喜欢tasklet,但我很确定您也可以使用beforeJob和AfterJob进行一些研究,默认情况下,tasklet的执行方法是事务性的。详情如下: