2

SpringBatchでジョブが再開されたかどうかを確認する可能性はありますか?

Spring-Batchからの再起動サポートなしでいくつかのタスクレットを提供しており、ジョブが再開された場合は独自の手順を実装する必要があります。

JobRepository、JobOperator、JobExplorerなどで可能性が見つかりません。

4

3 に答える 3

8

必要なプロパティを使用してJobExplorerBeanを定義する

<bean id="jobExplorer"
class="org.springframework.batch.core.explore.support.JobExplorerFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="lobHandler" ref="lobHandler"/>
</bean>

jobNameでクエリします

List<JobInstance> jobInstances= jobExplorer.getJobInstances(jobName);

for (JobInstance jobInstance : jobInstances) {
    List<JobExecution> jobExecutions = jobExplorer.getJobExecutions(jobInstance);
    for (JobExecution jobExecution : jobExecutions) {
        if (jobExecution.getExitStatus().equals(ExitStatus.COMPLETED)) {
        //You found a completed job, possible candidate for a restart
        //You may check if the job is restarted comparing jobParameters
        JobParameters jobParameters = jobInstance.getParameters();
        //Check your running job if it has the same jobParameters 
        }
     }
}

これをコンパイルしませんでしたが、私はそれがアイデアを与えることを願っています

于 2012-07-28T19:13:41.973 に答える
1

jobExplorerを使用する別の方法は、次のコマンドを実行することです。

jobExplorer.getJobExecutions(jobExplorer.getJobInstance(currentJobExecution.getJobInstance().getId())).size() > 1;

このステートメントは、同じジョブ(同じID)の別の実行が存在するかどうかを確認します。最小限の制御が行われている環境では、他の実行が失敗または停止した実行ではない可能性はありません。

于 2016-04-19T13:05:31.433 に答える
0

潜在的に、この情報はSpring-Batchのデータベーステーブルで見つけることができ、正確なテーブルの名前を思い出すことはできませんが、テーブルが少ないため、すぐに理解できます。再起動に関する情報があると思います。

于 2012-07-27T09:32:17.950 に答える