Spring批处理从一开始就没有开始读取列表

时间:2018-01-02 05:49:22

标签: scheduled-tasks spring-batch

我正在使用任务计划程序来运行每10秒运行一次的批处理作业。但是,每隔10秒钟,读者就会从列表中的第二个元素开始读取。 我的自定义读者:

public class DataReader implements ItemReader<User> {

    @Autowired
    private MainDAO mainDAO;
    private int counter;
    private List<User> userList;

    @PostConstruct
    public void init() {
        this.userList = this.mainDAO.getAllUsers();
    }

    public User read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException {
        // TODO Auto-generated method stub
        System.out.println(counter);
        if(counter < userList.size())
            return userList.get(counter++);
        return null;
    }

}

它始终从列表中的第二个元素开始读取,而在创建类时,计数器必须设置为零。 我的运行计划程序:

@Component
public class RunScheduler {

    @Autowired
    private JobLauncher jobLauncher;

    @Autowired
    private Job job;

    public void run() {
        try {
            String dateParameter = new Date().toString();
            JobParameters parameter = new JobParametersBuilder().addString("date", dateParameter).toJobParameters();

            System.out.println(dateParameter);

            JobExecution execution = this.jobLauncher.run(job, parameter);
            System.out.println("Exit status: " + execution.getStatus());

        }
        catch(Exception exception) {
            exception.printStackTrace();
        }
    }

}

我的Spring批量配置:

<!-- Spring Batch Configuration: Start -->

    <bean id="customReader" class="com.arpit.reader.DataReader" />

    <bean id="customProcessor" class="com.arpit.processor.DataProcessor" />

    <bean id="customWriter" class="com.arpit.writer.DataWriter" />

    <batch:job id="invoiceJob">
        <batch:step id="step1">
            <batch:tasklet>
                <batch:chunk reader="customReader" processor="customProcessor" writer="customWriter" commit-interval="1" />
            </batch:tasklet>
        </batch:step>
    </batch:job>

    <bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />

    <bean id="jobLauncher" class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
        <property name="jobRepository" ref="jobRepository"/>
    </bean>

    <bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean">
        <property name="transactionManager" ref="transactionManager" />
    </bean>
    <!-- Spring Batch Configuration: End -->

    <!-- Task Scheduler Configuration: Start -->

    <bean id="runScheduler" class="com.arpit.scheduler.RunScheduler" />

    <task:scheduled-tasks>
        <task:scheduled ref="runScheduler" method="run" cron="*/10 * * * * *" />
    </task:scheduled-tasks>
    <!-- Task Scheduler Configuration: End -->

有人可以帮我弄清问题是什么吗?

0 个答案:

没有答案