2016-08-11 6 views
0

に非同期春のバッチジョブを作るためにどのように私は別の仕事ではと春のバッチ非同期ジョブを作成しようとしています。 Job-1を完了し、Job-2を実行する必要があるとします。しかし、Job-1はJob-2が完成しなくなるまで待っていますが、私はそれが欲しくないのです。私もJobStepを使用しましたが、同期的な方法で起こっていて役に立ちません。 Job-1がJob-2が完了するまで待たなければならない非同期的な使い方を手伝ってくれる人がいますか?別のジョブ

<bean id="taskExecutorAsync" class="org.springframework.core.task.SimpleAsyncTaskExecutor" /> 
<bean id="jobLauncherAsync" class="org.springframework.batch.core.launch.support.SimpleJobLauncher"> 
     <property name="jobRepository" ref="jobRepository" /> 
     <property name="taskExecutor" ref="taskExecutorAsync" /> 
</bean> 

<bean id="CreationProcess" class="test.CreationProcess"> 
     <property name="jobLauncher" ref="jobLauncherAsync" /> 
     <property name="jobRepository" ref="jobRepository" /> 
     <property name="jobExplorer" ref="jobExplorer" />   
</bean> 

おかげ

+0

ようこそスタックオーバーフロー!どのように物事をまとめているかを示すために、コードの短い部分を追加することを検討してください - ここで助けを得る確率が向上します! – lenz

+0

ありがとうlenz。設定ファイルからサンプルのxmlスニペットを追加しました。 – user3511733

答えて

0

以下 サンプルXMLスニペットは、あなたはブロックを回避するためにSimpleAsyncTaskExecutorエグゼキュータを使用することができます。

0

別スレッドを作成しようとしましたが、戻ってきて新しいスレッドが詳細を更新しました。別のジョブで新しい非同期スプリングバッチジョブを作成できません。要するに

0

、あなたはJobStepを使用することはできません。その理由は、Jobが状態マシンであり、それぞれStepが状態として機能するためです。 Jobが次の状態に移行するためには、現在の状態(あなたの子ジョブ)を完了する必要があります。

他のジョブからジョブを起動することもできますが、Taskletを入力して新しいスレッド(TaskExecutorを使用)でジョブを起動し、すぐに戻る必要があります。

関連する問題