今回はMuleのバッチ処理について、簡単に説明します。実際のフロー作成は次回以降やります。
Batch Jobの仕組み
MuleのBatch Jobは大量のデータを扱う処理に対して、負荷分散・処理時間軽減のために非同期で並列処理を行うための仕組みです。
イメージ図を以下のように描いてみました。処理するレコードが1000件と仮定した場合、ブロックサイズによってレコードを分割して、分割されたブロック分並列処理を行うような形となります。並列処理されるBatch Job内では1件ずつ処理するBatch Stepと、Batch Step内で処理されたレコードを集約して複数件まとめて処理をするBatch Aggregator部分で構成されます。
Apex Batchとの比較
MuleのBatch JobとApex Batchの機能比較を下にまとめました。また、ここで記載されている「×」は出来ないということではなく、標準の機能として用意されていないことを意味します。Apexの実装次第では動作させることが可能です。
機能 | Batch Job | Apex Batch |
---|---|---|
ブロック分割 | ○ | ○ |
受け入れ式の設定 | ○ | × |
Stepの複数実行 | ○ | × |
受け入れポリシーの設定 | ○ | × |
Batch Aggregator | ○ | × |
完了処理 | ○ | ○ |
最大失敗レコード数の設定 | ○ | × |
ブロック分割
対象のレコードを分割して非同期で処理分散させることができます。ブロックサイズについては、
受け入れ式の設定
Batch Stepに入ったレコードはフィルタリングすることができます。受け入れ式を設定することで条件に一致したレコードだけBatch Stepで処理されます。
Stepの複数実行
MuleのBatch StepはBatch Job内に必ず1つとは限らず、複数入れることができます。前述した通り、Batch Stepに対し受け入れ式を設定することができるので、条件の異なるBatch Stepを複数作って対象条件を変えることも可能です。
受け入れポリシーの設定
Batch Stepには受け入れ式だけでなく、受け入れポリシーも設定することができます。これは、複数のBatch Stepを設置した場合、前のBatch Stepで失敗したレコードをそのまま進めるか否かのオプションを設定できます。
Batch Aggregator
Batch AggregatorはBatch Stepで処理されたレコードを集約することができます。Batch Stepは1件ずつ処理されますが、Batch AggregatorはBatch Step分ループされたレコードを集約するため、一括処理をする場合はこちらを使用します。
最大失敗レコード数の設定
Batch Jobには最大失敗レコード数を設定することができます。例外発生等でレコード処理が失敗した場合、上限に達したときにBatch Jobを中断させることができます(制限なしも可能)。
次回、Batch Jobを使ってみる
ざっとApex Batchとの比較について挙げてみました。実際のフローの組み方や動作の仕方については次回やりたいと思います。
コメント