技術メモブログ

技術ネタの備忘録的なブログ。技術ネタ以外にも気になったことをつらつら書きます

jBatch その2

前回の続き

 今回は前回試せてなかったバッチの機能について

試すしたのは以下

  • partition
  • split

どちらも並列処理の機能だが、動作が異なる。

 

以下結果

起動クラスは前回同様

partition

使用するソースコード

使用するジョブ XML

 

ジョブ XML からも分かるように、partition は動作するスレッドで同じ処理を実施する。

スレッド数は MyMapper クラスで動的に設定している。

静的とするなら PartitionPlan を使用すればよい。

 

今回は以下のサイトも参考とさせて頂いた

Kyle's Laboratory: Partitioned Chunk Processingで並列処理してみる

 

partition_result

 

この結果は、partition 数を2、スレッド数を2 として動作させている

値は実行時の URL で渡すようにしている

(起動クラス、ジョブ XML クラスを参照)

 

ログにはスレッド番号を出力している(123とか出てる奴がそう)

処理を行う Reader~Writer はスレッド番号違いで動作していることが分かる

他処理するワーカー(Reader~Writer のこと)毎にも、 Collector が動作している

 

 split

使用するソースコード

使用するジョブ XML

 

split_result

 

split は partition と違い、スレッド毎に異なる処理を実行することができる

動作結果は何故か MyBatchlet3 が最後に動作しているが

(2回目の実行がやけに遅い)

 

 

partition、split ともに、最後どこかで処理をまとめて判定ってのがないが、decider で結果を集約してその後の動作を決定することができるので、合わせて使用するものなのかもしれない