MuleのBatch Jobについて

今回はMuleのバッチ処理について、簡単に説明します。実際のフロー作成は次回以降やります。

スポンサーリンク

Batch Jobの仕組み

MuleのBatch Jobは大量のデータを扱う処理に対して、負荷分散・処理時間軽減のために非同期で並列処理を行うための仕組みです。

イメージ図を以下のように描いてみました。処理するレコードが1000件と仮定した場合、ブロックサイズによってレコードを分割して、分割されたブロック分並列処理を行うような形となります。並列処理されるBatch Job内では1件ずつ処理するBatch Stepと、Batch Step内で処理されたレコードを集約して複数件まとめて処理をするBatch Aggregator部分で構成されます。

Batch Jobのイメージ

Apex Batchとの比較

MuleのBatch JobとApex Batchの機能比較を下にまとめました。また、ここで記載されている「×」は出来ないということではなく、標準の機能として用意されていないことを意味します。Apexの実装次第では動作させることが可能です。

機能Batch JobApex 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との比較について挙げてみました。実際のフローの組み方や動作の仕方については次回やりたいと思います。

MuleSoft
スポンサーリンク

コメント