SpringBatchでジョブが再開されたかどうかを確認する可能性はありますか?
Spring-Batchからの再起動サポートなしでいくつかのタスクレットを提供しており、ジョブが再開された場合は独自の手順を実装する必要があります。
JobRepository、JobOperator、JobExplorerなどで可能性が見つかりません。
SpringBatchでジョブが再開されたかどうかを確認する可能性はありますか?
Spring-Batchからの再起動サポートなしでいくつかのタスクレットを提供しており、ジョブが再開された場合は独自の手順を実装する必要があります。
JobRepository、JobOperator、JobExplorerなどで可能性が見つかりません。
必要なプロパティを使用して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
}
}
}
これをコンパイルしませんでしたが、私はそれがアイデアを与えることを願っています
jobExplorerを使用する別の方法は、次のコマンドを実行することです。
jobExplorer.getJobExecutions(jobExplorer.getJobInstance(currentJobExecution.getJobInstance().getId())).size() > 1;
このステートメントは、同じジョブ(同じID)の別の実行が存在するかどうかを確認します。最小限の制御が行われている環境では、他の実行が失敗または停止した実行ではない可能性はありません。
潜在的に、この情報はSpring-Batchのデータベーステーブルで見つけることができ、正確なテーブルの名前を思い出すことはできませんが、テーブルが少ないため、すぐに理解できます。再起動に関する情報があると思います。