2016-12-28 10 views
1

Javaバウンドバッチを使用してさまざまなジョブを作成しています。バネバッチジョブの進行状況を監視

私はジョブの現在の状態を取得する必要があります 手順は、現在 (私は同時に実行されている複数のステップを有していてもよい)で実行されている手順は(ステータスと終了コードを)失敗した など

私はオンライン見るだけの例は、XMLベースのスプリングバッチのものであり、I java configのみを使用します。

ありがとうございました。

+0

は、あなたの仕事のためにあなたのセットアップDBをお持ちですか? 春のバッチテーブルでこのすべての情報を読むことができるので、 –

+0

はい、私はネイティブのバネバッチコードを使用する方が良い選択肢だと考えていました。あなたの考え? – Tomer

答えて

0

私は春のバッチメタデータテーブルでこれらの2つのクエリを使用して、ジョブの進行状況とステップの詳細を知ります。最初のクエリで

SELECT * FROM BATCH_JOB_EXECUTION ORDER BY START_TIME DESC; 

SELECT * FROM BATCH_STEP_EXECUTION WHERE JOB_EXECUTION_ID=? ORDER BY STATUS; 

、私が最初に特定のステップの詳細を見つけるために、2番目のクエリでは、そのIDを使用して、私のジョブの実行に対応するJOB_EXECUTION_IDを見つけます。

さらに、設定の選択(JavaまたはXML)は、Springバッチのメタデータとは関係ありません。データを永続化している場合は、そのXML設定またはJava Configが問題ではありません。監視 - ベースのJava用

あなたはなどのジョブを照会するJobExplorer & JobRepository豆を使用することができます

例えばList<JobInstance>からjobExplorer.getJobInstances & jobExplorer.getJobExecutions(jobInstance)など

JobExecutionsからStepExecutionsなどが取得できます。

JobExplorer & JobRepositoryについては、JobRegistryBeanPostProcessor beanを正しく設定する必要があります。

@Bean 
    public JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor(
     JobRegistry jobRegistry) { 
    JobRegistryBeanPostProcessor jobRegistryBeanPostProcessor = new JobRegistryBeanPostProcessor(); 
    jobRegistryBeanPostProcessor.setJobRegistry(jobRegistry); 
    return jobRegistryBeanPostProcessor; 
    } 
+0

ありがとうございます。 私はこれらのテストを行うために春バッチのネイティブJavaコードのラインでもっと考えていました。 – Tomer

1

別のオプションは、実行中または歴史的なジョブやステップの実行を閲覧するためのJobExplorer

エントリポイントを使用することです。データは永続ストレージから再水和される可能性があるため、実行時に存在していた揮発性フィールドは含まれていない可能性があります。

List<JobExecution> jobExecutions = jobExplorer.getJobExecutions(jobInstance); 
for (JobExecution jobExecution : jobExecutions) { 
    jobExecution.getStepExecutions(); 
    //read step info 
} 

そして、あなたは工場を使用する必要がjobExplorerを作成するための:

import org.springframework.batch.core.explore.support.JobExplorerFactoryBean; 
JobExplorerFactoryBean factory = new JobExplorerFactoryBean(); 
factory.setDataSource(dataSource); 
factory.getObject(); 
関連する問題