SpringBatchはマルチスレッドを構成します(TaskExecutor)詳細なジョブ開始(7)



Springbatch Configure Multithreading Detailed Job Start



記事のディレクトリ


はじめに:シングルスレッド、シングルプロセスのバッチジョブを使用すると、多くの問題をより速く解決できます。ジョブの実行速度が必要な場合、SpringBatchはマルチスレッドのサポートを提供します。単純な構成のみで、複数のスレッドを使用して実行するのが私たちの仕事です。

GitHubコードはアドレスの上にアップロードされています:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch

SpringBatchは他の記事をトレーニングします:



A、SpringBatchはマルチスレッドを構成します

マルチスレッドの最も簡単な方法の構成は、ステップで構成TaskExecutorを追加することです。

マルチスレッドステップ



@Bean public Step catThreadStep() { return stepBuilderFactory.get('catThreadStep') // .listener(catStepListener) .listener(catChunkListener) .chunk(10) .reader(catCommonMybatisItemReader()) .processor(cafeCatProcessor) .writer(cafeCatCommonFileItemWriter()) .taskExecutor(taskExecutor()) .build() }

TaskExecutor実装クラス

@Bean public TaskExecutor taskExecutor(){ return new SimpleAsyncTaskExecutor('spring_batch') }

注:上記の構成のステップ結果は、個別の実行スレッドによって読み取られ、各ブロック(各コミット間隔)の書き込み処理が実行されます。ジョブの実行は決まった順序ではありません。

2、SpringBatchマルチスレッド構成タスクレット

マルチスレッドtタスクレットのデフォルト構成は4です。スレッドプールを完全に使用するには、タスクレットを増やす必要がある場合があります。
キーワードに配置されたタスクレットステップの数を提供します:throttleLimit



@Bean public Step catThreadStep() { return stepBuilderFactory.get('catThreadStep') // .listener(catStepListener) .listener(catChunkListener) .chunk(10) .reader(catCommonMybatisItemReader()) .processor(cafeCatProcessor) .writer(cafeCatCommonFileItemWriter()) .taskExecutor(taskExecutor()) .throttleLimit(8) .build() }

SpringBatchの複数のスレッドには決まった順序はありません。必ず、ジョブの実行に注意してください。したがって、マルチスレッドでの使用には注意が必要です。