java - Spring Batch 应用程序结构双源数据

标签 java spring spring-batch batch-processing

我是 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/

相关文章:

java - 如何将 url 中的查询字符串传递的值传递到 spring Controller 中?

java - 将@TestExecutionListeners 添加到测试套件时,@Sql 脚本不会为@test 运行

java - Spring Batch 适合我的服务代码吗?

java - 默认包是如何创建的以及在哪里创建的?

spring - 条件@PostConstruct注释

java - Spring 安全: j_spring_security_check page not found

java - 为什么 spring batch itemWriter 有方法写数据列表

java - 为什么 Java 中的转义点正则表达式与条目字符串不匹配

java - 文件存在,但在 toast 中它是空的

java - Netbeans:包 com.mysql 不存在