spring batch job複数回実行する構成--spring batch retart Step already compleete or not retable

1278 ワード

1、問題:spring batchプログラムの運転があるjobを実行し終わった時、job設定のパラメータは変わらず、プログラムが再起動された時、プログラムの提示:spring batch retart Step already completter or not retable、soのaction to execute:
2、理由:Spring Batchは毎回ユニークな作業パラメータで実行する必要があります。
3、解決:しかしテスト段階では、プログラムは何度も繰り返し実行される必要があります。jobを作成する時にパラメータを追加して要求を満たすことができます。
1)Jobの構成は以下の通りである。
import org.springframework.batch.core.launch.support.RunIdIncrementer;

    @Bean
    public Job backUpJob(AccountsDailyListener listener) {
        return jobBuilderFactory.get("backUpJob")
                .incrementer(new RunIdIncrementer())
                .listener(listener)
                .flow(step1())
                .end()
                .build();
    }
incrementer(new RunIdIncrementer()の配置を追加して、各jobの運行idを唯一にします。
2)Jobの参加:
JobParameters jobParameters = new JobParametersBuilder()
                        .addDate("date", new Date())     
                        .toJobParameters();
                jobLauncher.run(ctx.getBean("myJob", Job.class), jobParameters);
多くのSpring batchを見た場合、JobParameeterはdateを設定し、new Date()となります。最初は用途が分かりませんでしたが、プログラムを再実行すると、Step already completter or not retableにaddDateのコードを加えて正常に動作します。パラメータが同じはずのjobのStepはデフォルトでは一回しか実行されません。この設定を加えると一番簡単な解決方法です。