0

由于与现有应用程序集成的限制,我们需要为每个块使用单独的数据库连接,并在块的末尾管理提交边界一次提交。我们设计为使用远程分区并在工作人员处处理多个分区。分区步骤预期按顺序执行块。

我们尝试了一种结合 Chink Listener 和处理器的方法,在 chunk listener 方法之前获得的连接作为实例变量并在处理时使用它,

但是这个连接在 beforeChunk 方法处理的第一个项目之后被替换。在这种情况下使用资源少事务管理器。无论如何,不​​建议将此事务管理器用于生产。我们希望并行处理块,而不是预期的。我们还观察到,当我们通过 beforeChunk 方法在 writer 处保持连接时,调用 write 方法时会关闭。

第二种方法是使用 DataSourceTransactionManager ,但不确定如何从块级别使用的事务中获取连接。

步骤配置如下:-

<step id="senExtractGeneratePrintRequestWorkerStep" xmlns=http://www.springframework.org/schema/batch>
                                <tasklet>
                                                <chunk reader="senExtractGeneratePrintRequestWorkerItemReader"
                                                                processor="senExtractGeneratePrintRequestWorkerItemProcessor"
                                                                writer="senExtractGeneratePrintRequestWorkerMultiItemWriter"
                                                                commit-interval="${senExtractGeneratePrintRequestWorkerStep.commit-interval}" 
                                                                skip-limit="${senExtractGeneratePrintRequestWorkerStep.skip-limit}">
                                                                <skippable-exception-classes>
                                                                                <batch:include class="java.lang.Exception" />
                                                                </skippable-exception-classes>
                                                </chunk>
                                                <listeners>
                                                                <listener ref="senExtractGeneratePrintRequestWorkerItemProcessor" />
                                                </listeners>
                                </tasklet>
</step>
<bean id="senExtractGeneratePrintRequestWorkerItemProcessor"
        scope="step"
        class="com.abc.batch.senextract.worker.SENExtractGeneratePrintRequestItemProcessor"/>
    

在调用 write 之前,连接由数据源关闭。调用层次结构的屏幕截图如下。 在此处输入图像描述

4

0 回答 0