在一个步骤中使用spring batch可以使两个读者拥有一个依赖于另一个的查询吗?

时间:2019-04-24 17:22:32

标签: spring-batch

我有一个Spring Batch程序,它读取数据库,处理并写入数据库。该程序每天运行一次,我想检查是否有新记录添加到源数据库中。因此,我认为也许可以在一个步骤中让读者从目标数据库获取最新的时间戳。并使用该时间戳查询源数据库是否有任何新记录。对这个问题有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用添加状态列的解决方案:

将数据插入表中后,状态应为“未处理”。当您的ItemReader读取数据时,当ItemProcessor和ItemWriter完成其任务时,将状态更改为“处理中”。这样,您可以确保ItemReader仅读取“未处理”数据。

如果无法更改源表,则使用自定义表的解决方案:

如果无法修改源数据库表,则可以将最后一次查询时间存储在自定义表中。假设在第一次运行时,您可以获得所有记录并将查询数据库的时间存储在某些自定义表中。在第二天,当您再次运行该作业时,将从您存储在自定义表中的时间到当前时间之间获取记录。现在,用当前时间替换自定义表中的旧时间戳。