spring批处理中的一个步骤是否可以有多个读取器?
Is it possible to have multiple readers for one step in spring batch?
我需要创建一个 spring 批处理,其中我需要从 2 个不同的表中获取数据。
这将是 reader 部分。
问题是我需要 2 reader 个查询。并且只会根据条件调用其中一个。
但作家将是一样的。
这样tasklet就基本一样了。
我可以在一个步骤中有 2 readers 将根据条件调用..??
类似于 spring 批处理 xml 中的内容:
if (condition)
then reader1
else reader2
...
....
......
<reader1 id=".." class="..">
</reader1>
.....
........
<reader2 id=".." class="..">
</reader2>
您是否考虑过使用条件控制流模式 Spring 批量报价?我认为它可以导致更简单的构造并坚持一些核心模式 spring batch 鼓励。
您基本上是对要调用步骤的“条件”进行编程。所以定义两个步骤,比如 step1
有一个 reader,处理器,一个对象类型的编写器和 step2
有一个 reader,处理器,另一种类型的编写器。也许作家也在类型之间共享。然后你可以像这样定义控制流:
@Bean
public Job myJob() {
JobBuilder jobBuilder = jobs.get("Spring Batch: conditional steps");
return jobBuilder.start(determineRoute())
.on("item1").to(flow1())
.on("item2").to(flow2()).end()
.build();
}
在示例中 determineRoute()
是一个 tasklet,returns 自定义 ExitStatus 值 item1
或 item2
& flow1
和 flow2
不同处理每个对象的流程(或步骤)。
在他们的文档中查看:https://docs.spring.io/spring-batch/docs/current/reference/html/step.html#conditionalFlow
编辑:您也可以使用 JobExecutionDecider
https://www.baeldung.com/spring-batch-conditional-flow#2-programmatic-branching-withjobexecutiondecider
做类似的事情
我需要创建一个 spring 批处理,其中我需要从 2 个不同的表中获取数据。 这将是 reader 部分。
问题是我需要 2 reader 个查询。并且只会根据条件调用其中一个。 但作家将是一样的。 这样tasklet就基本一样了。
我可以在一个步骤中有 2 readers 将根据条件调用..??
类似于 spring 批处理 xml 中的内容:
if (condition)
then reader1
else reader2
...
....
......
<reader1 id=".." class="..">
</reader1>
.....
........
<reader2 id=".." class="..">
</reader2>
您是否考虑过使用条件控制流模式 Spring 批量报价?我认为它可以导致更简单的构造并坚持一些核心模式 spring batch 鼓励。
您基本上是对要调用步骤的“条件”进行编程。所以定义两个步骤,比如 step1
有一个 reader,处理器,一个对象类型的编写器和 step2
有一个 reader,处理器,另一种类型的编写器。也许作家也在类型之间共享。然后你可以像这样定义控制流:
@Bean
public Job myJob() {
JobBuilder jobBuilder = jobs.get("Spring Batch: conditional steps");
return jobBuilder.start(determineRoute())
.on("item1").to(flow1())
.on("item2").to(flow2()).end()
.build();
}
在示例中 determineRoute()
是一个 tasklet,returns 自定义 ExitStatus 值 item1
或 item2
& flow1
和 flow2
不同处理每个对象的流程(或步骤)。
在他们的文档中查看:https://docs.spring.io/spring-batch/docs/current/reference/html/step.html#conditionalFlow
编辑:您也可以使用 JobExecutionDecider
https://www.baeldung.com/spring-batch-conditional-flow#2-programmatic-branching-withjobexecutiondecider