Spring 批处理应用结构双源数据

Spring Batch Application Structure Bi-Source data

我是 Spring Batch 的真正新手,所以我正在尝试解决一些问题并从中学习一些东西。但是,我坚持使用其中之一。

想象一下来自不同供应商的两个数据源在 CVS 中以不同格式(例如他们的库存)描述同一事物。因此,我使用两个不同的 Reader 来统一一个公共对象 Product 中的数据。然后我必须积累所有产品(通过他们的名字)并合并每个产品的可用库存。导出是一份包含所有可用产品及其可用库存编号 (CSV) 的单一报告。

我应该如何为 Spring 批处理所有元素划分我的问题?

提前致谢。

过程中的步骤:
1)在嵌入式(in-memory)数据库中创建一个table。
2) 第一步应该是截断这个 table,为此你可以在你的工作中定义一个 tasklet :-

 <batch:step id="truncateTempTableFrOrder" next="readWriteDataOfSource1">
            <batch:tasklet ref="truncateTempTableTasklet" />
        </batch:step>

3) 现在,接下来的两个步骤应该只是从两个数据源中获取数据并将该数据写入临时 table,两个步骤可以配置如下:

<batch:step id="readWriteDataOfSource1" next="readWriteDataOfSource2">
            <batch:tasklet>
                <batch:chunk reader="dataReader"     writer="dataWriter"
                    commit-interval="100" />
            </batch:tasklet>
        </batch:step>

使用org.springframework.batch.item.database.JdbcCursorItemReader从数据源读取数据,使用org.springframework.batch.item.database.JdbcBatchItemWriter写入数据库。

4) 现在你的最后一步是使用上一步提到的 jdbc reader 从临时 table 读取数据,然后使用 写入数据org.springframework.batch.item.file.FlatFileItemWriter.

您可以在 select 查询中执行数据处理,同时从临时 table 获取数据。 如何在spring batch中配置Reader和writers,可以参考任何好的教程或Spring Batch in Action(书)。