如何设置具有多个项目编写器的Spring Batch单个读取器?

时间:2019-01-15 19:46:18

标签: spring spring-boot spring-batch

我需要对两个不同的数据库执行数据库操作,如下所示。

stepBuilderFactory.get("some text")
                  .<POJO,POJO>chunk(200) 
                  .reader(dataReader)
                  .writer(writeToDB1)
                  .writer(writeToDB2) 
                  .faultTolerant()
                  .skipLimit(10) 
                  .skip(DataAccessException.class)
                  .build();

只有第二个编写器被执行,而忽略了第一个编写器。可以使用Spring Batch 3.xSpring Boot 1.5.x来实现吗?

1 个答案:

答案 0 :(得分:1)

CompositeItemWriter是您所需要的。它使您可以编写委托编写器,以将项目写入多个目的地。

当您的委托编写者为ItemStream(显然是您的情况)时,您需要在步骤中将其注册为流,以便正确调用来自ItemStream接口的回调方法。在步骤生命周期的必要时间点(或简而言之,以便正确履行其ItemStream合同)。您可以在参考文档的Registering ItemStream with a Step部分中找到更多详细信息。

希望这会有所帮助。