我是 Spring Batch 的真正新手,所以我正在尝试解决一些问题并了解一些相关知识。然而,我被其中之一困住了。
想象一下来自不同供应商的两个数据源在 CVS 中以不同格式(例如他们的库存)描述相同的事物。因此,我使用两个不同的 Reader 将数据统一到一个公共(public)对象 Product
中。然后我必须累积所有产品(通过它们的名称)并合并每个产品的可用库存。导出是一份包含所有可用产品及其可用库存编号 (CSV) 的单一报告。
我应该如何划分 Spring Batch 的问题并处理所有元素?
提前致谢。
最佳答案
流程步骤:
1) 在嵌入式(内存)数据库中创建一个表。
2)第一步应该是截断此表,您可以在作业中为其定义一个tasklet:-
<batch:step id="truncateTempTableFrOrder" next="readWriteDataOfSource1">
<batch:tasklet ref="truncateTempTableTasklet" />
</batch:step>
3)现在,接下来的两个步骤应该只是从两个数据源获取数据并将该数据写入临时表,两个步骤可以配置如下:
<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 读取器从临时表中读取数据,然后使用 org.springframework.batch.item.file.FlatFileItemWriter 写入数据。
您可以在从临时表中获取数据的同时在选择查询中执行数据处理。 如何在Spring Batch中配置Readers和Writer,你可以引用任何好的教程或者Spring Batch in Action(书)。
关于java - Spring Batch 应用程序结构双源数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34992615/