jBatch その2
前回の続き
今回は前回試せてなかったバッチの機能について
試すしたのは以下
- partition
- split
どちらも並列処理の機能だが、動作が異なる。
以下結果
起動クラスは前回同様
partition
ジョブ XML からも分かるように、partition は動作するスレッドで同じ処理を実施する。
スレッド数は MyMapper クラスで動的に設定している。
静的とするなら PartitionPlan を使用すればよい。
今回は以下のサイトも参考とさせて頂いた
Kyle's Laboratory: Partitioned Chunk Processingで並列処理してみる
この結果は、partition 数を2、スレッド数を2 として動作させている
値は実行時の URL で渡すようにしている
(起動クラス、ジョブ XML クラスを参照)
ログにはスレッド番号を出力している(123とか出てる奴がそう)
処理を行う Reader~Writer はスレッド番号違いで動作していることが分かる
他処理するワーカー(Reader~Writer のこと)毎にも、 Collector が動作している
split
split は partition と違い、スレッド毎に異なる処理を実行することができる
動作結果は何故か MyBatchlet3 が最後に動作しているが
(2回目の実行がやけに遅い)
partition、split ともに、最後どこかで処理をまとめて判定ってのがないが、decider で結果を集約してその後の動作を決定することができるので、合わせて使用するものなのかもしれない