如何在Spring Batch Reader中逐块读取多个数据库

时间:2019-06-22 20:43:26

标签: spring-batch

我正在开发一个春季批处理作业,需要从4个不同的数据库(不同的服务器)中读取。

过程进行如下操作

1)从db1中读取记录

2)用db2中的信息过滤掉一些

3)使用db3中的信息过滤更多

4)使用db4中的信息过滤更多

5)将过滤的记录保存到db5

我的方法

要从 db1 中进行读取,我可以使用ItemReader(并在步骤中提供块值),然后使用多链处理器进行过滤,然后使用JpaItemWriter。

我的方法存在问题

我认为上述方法的问题是,假设我从db1获得 100,000条记录,我需要查询db2,db3,db4 100,000次,因为将为每个项目调用ItemProcessor。 / p>

可能的解决方案

1)我认为,如果为每个记录块而不是1个记录调用处理器,将解决问题。

2)或者,如果我可以链接Spring读取器,以便一个读取器将数据(逐块)传递给其他读取器,那么我可以根据其他数据库中的信息进行过滤,最后传递给处理器

但是我不确定还是无法找到一种方法来实现我想到的上述解决方案。

这些解决方案是否足够好?,如果可以的话,我该如何实现呢?

或者还有其他实现方法吗?

编辑:此question可能是重复的,但是该问题的解决方案无法解决我的问题。

因为我要读取两个以上的数据库,而且如果我以writer的write方法编写过滤逻辑,那么它看起来像是黑客,因为writer并不意味着要进行任何数据丰富/过滤。

0 个答案:

没有答案