SpringBatchはマルチスレッドを構成します(TaskExecutor)詳細なジョブ開始(7)
Springbatch Configure Multithreading Detailed Job Start
記事のディレクトリ
はじめに:シングルスレッド、シングルプロセスのバッチジョブを使用すると、多くの問題をより速く解決できます。ジョブの実行速度が必要な場合、SpringBatchはマルチスレッドのサポートを提供します。単純な構成のみで、複数のスレッドを使用して実行するのが私たちの仕事です。
GitHubコードはアドレスの上にアップロードされています:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-springbatch
SpringBatchは他の記事をトレーニングします:
- SpringBatchは単一のファイル(FlatFileItemReader)を読み取り、単一のファイル(FlatFileItemWriter)を書き込みます(a)
- SpringBatchシーケンシャル読み取り複数ファイル(MultiResourceItemReader)およびシーケンシャル書き込みファイル(MultiResourceItemWriter)(b)
- SpringBatch読み取りデータベース(MyBatisPagingItemReader)(c)
- SpringBatchはファイルの読み取り(FlatFileItemReader)データベースの書き込み(MyBatisBatchItemWriter)(d)
- ジョブリスナーSpringBatchリスナー(JobExecutionListener)とステップリスナー(StepExecutionListener)(e)
- チャンクリスナーSpringBatchリスナー(ChunkListener)とスキップリスナー(SkipListener)(vi)
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の複数のスレッドには決まった順序はありません。必ず、ジョブの実行に注意してください。したがって、マルチスレッドでの使用には注意が必要です。