DB Slave Step Writer 提交后 Spring Batch 推送到队列

问题描述 投票:0回答:1

我们的要求是在Slave步骤DB writer Commit之后将Items发送到队列。

这是一个本地分区应用程序,它读取文件并拆分为 30 个 Slave 步骤并插入到一个表中。在表插入提交之后,我们希望将一些属性从从属编写器发送到嵌入式队列,该队列将再次插入到另一个表中(这是另一个事务的一部分)。我们希望确保队列事务提交应该在spring批从属写入器提交

之后发生

我们已经尝试过

我们尝试过 ItemWriteListener@AfterWrite。这在提交事务之前没有帮助。计划使用 ChunkListener@afterChunk 但这没有项目块,我们需要从从属步骤线程中设置它,并且不确定对并发性有任何影响。请让我们知道任何其他最佳替代方案

从站步骤供参考

 @Bean
    public Step slaveStep(ItemReader<BaseDTO> dispatchReader, CompositeItemProcessor<BaseDTO, BaseDTO> dispatchProcessor, CompositeItemWriter<BaseDTO> dispatchWriter) throws Exception {
        return new StepBuilder("slaveStep", jobRepository).<BaseDTO, BaseDTO>chunk(chunkSize, dispatchTransactionManager).reader(dispatchReader)
                .processor(dispatchProcessor).writer(dispatchWriter)
                .faultTolerant().skipLimit(skipErrorCount)
                .skip(Exception.class)
                .noRetry(Exception.class)
                .noRollback(Exception.class)
                .processorNonTransactional()
                .listener(itemSkipListener())
                .listener(stepExecutionListener())
                .build();
    }


 

 
spring-batch
1个回答
0
投票

我会保持简单(与使用侦听器或复合编写器以及处理 XA 事务等相比),并添加一个后续步骤,从表中读取已提交的项目并将它们发送到队列。此步骤将在分区步骤完成将数据写入表后开始。

© www.soinside.com 2019 - 2024. All rights reserved.