当commit-interval大于1时,读取一个文件并写入两个不同的文件不起作用

时间:2016-09-16 15:35:56

标签: spring spring-data spring-integration spring-batch

我正在阅读一个文件并基于一些业务逻辑写入两个不同的文件。我正在使用 ClassifierCompositeItemWriter 来写入两个不同的文件。

仅当commit-interval为1或者某些记录被写入不同的输出文件时才有效。

以下是代码段

<batch:job id="interestJob">
    <batch:step id="verifyFile" parent="VerifyFile">
        <batch:fail on="FAILED"/>
        <batch:next on="*" to="processInterest"/>
    </batch:step>
    <batch:step id="processInterest">
        <batch:tasklet>
        <batch:chunk  reader="itemReader" processor="itemProcessor" writer="itemWriter" commit-interval="50" skip-limit="1000000">
        <batch:streams>
                <batch:stream ref="masterCarditemWriter"/>
                 <batch:stream ref="visaitemWriter"/>
            </batch:streams>            

        </batch:tasklet>
    </batch:step>
</batch:job>

<bean id="itemWriter" class="org.springframework.batch.item.support.ClassifierCompositeItemWriter">
        <property name="classifier" ref="classifier" />
</bean>

<bean id="classifier"  class="org.springframework.batch.classify.BackToBackPatternClassifier">
    <property name="routerDelegate">
        <bean class="com.scotiabank.sco.report.batch.dda.interest.MyClassifier" />
    </property>
    <property name="matcherMap">
        <map>
        <entry key="visa"   value-ref="visaitemWriter" />
        <entry key="master" value-ref="masterCarditemWriter" />
        </map>
    </property>
</bean>


public class MyClassifier {
@Classifier
public String classify(Interest dda) {
    return dda.getCardType();

}

}

0 个答案:

没有答案