パイプライン並列バッチの仕組み

具体的な例で仕組みを書いてみたいと思います。

  1. CSVでデータを取得(処理A)
  2. 必要なデータだけを選択する(処理B)
  3. データをデータベースへ登録する(処理C)

これをそれぞれ独立したスレッドで動かすことを考えます。
処理AではCSVから1行取り出したら、処理Bへ渡します。これをどんどん繰り返す感じです。
処理Bでは処理Aから受け取ったデータを確認して、登録できるデータだけを処理Cへ渡します。
処理Cでは処理Bから受け取ったデータをどんどんデータベースへ登録します。今のところトランザクションは考えないようにします。

で、この処理ABCのことをステージと呼ぶことにします。
もちろんステージには送受信用のキューが存在しますね。