春季批量工作无限循环

时间:2013-10-15 18:24:53

标签: spring-batch

我在生产发布的最后一分钟发现了Java Spring Batch的一个奇怪问题。它进入无限循环。

这是我的配置:

<batch:job id="dbasJob" restartable="true">       
    <batch:step id="dbasStep" next="webService">         
        <tasklet>             
            <chunk reader="campaignReader" processor="campaignProcessor" writer="campaignWriter" commit-interval="1" 
                skip-limit="50">

                <skippable-exception-classes>
                    <include class="java.lang.Exception" />
                </skippable-exception-classes>

                <listeners>
                    <listener ref="campaignProcessListener" />
                    <listener ref="campaignSkipListener" />
                </listeners>
            </chunk>         
        </tasklet>
        <batch:listeners>
            <batch:listener ref="promotionListener" />
        </batch:listeners>     
    </batch:step>

记录总数为10.因此,在处理每条记录后都会发生提交。 我将结果写入Writer中的数据库。

我从Reader中逐个获取项目,处理并写入数据库。

public Campaign read()
{   
    return campaignList.isEmpty() ? null : campaignList.remove(0);
}

public Campaign process(Campaign campaign) throws UnexpectedInputException, ParseException, Exception {

    try 

public void write(List<? extends Campaign> campaignList) throws Exception 
{//...Writing to DB...

它不断运行并无限地将数据插入表中。

观察是:提交间隔&lt; TotalRecords和Skip-Limit&gt;提交间隔。

如果有人建议某些解决方案/解决方法,那么在因为这个问题而暂停生产发布的时候,对我来说会有很大的帮助。

非常感谢。

1 个答案:

答案 0 :(得分:1)

此问题有open ticket