2017年9月27日水曜日

LogicApps の Batch コネクタの挙動について

LogicApps の Batch コネクタが更新されて、以前に話題に上がっていたスケジューリング対応が行われました。その挙動について試してみたところをまとめてみます。

検証するために次のような LogicFlow を作成しています。

image

これがバッチとして呼び出される側です。メッセージ件数を 3 として、スケジュールを 15 分単位に設定しています。

image

呼び出す側はこのようなシンプルなものです。手作業で実行することで確認を行いました。

結果としては次のようになりました。

image

ツイッターでつぶやかれたのは上記の 2 件となっています。この時、呼び出し側では以下のようにバッチ呼出を行ってみています。

image

このように、計 5 回の呼び出しを実行しています。

image

対してこちらがバッチ処理側の実行履歴です。実際に処理が実行されたのは 2 回だというのがわかります。これは 5 回呼び出されたうち、規定回数(3回)に達したことで 1 度、その後規定回数には達していないけどスケジュール上の設定で実行されたのが 1 度、というのがわかります。

個人的な予想としては、スケジュールを設定しているなら、呼び出しが発生していなくても実行されるかと思っていたのですが、結果を見る限りは 1 度でも呼び出しがないと実行されない挙動です。考えてみると、呼び出しがないということは実行する必要もない、という考え方に基づけばその通りだなとなります。

このように拡張されたバッチ処理では、指定回数または定期的実行を行うことができますが、そのバッチ処理の中で「処理対象がない」ケースについては LogicFlow でどうこうすることができません。この場合は違う方法を考える必要があります。

今の仕組みで行うなら、実際の呼び出し側とは別に定期的に実行する LogicFlow を用意して起き、そちらから連携されたデータについてはバッチ側でスルーする、という作りにするのがよさそうです。

0 件のコメント:

コメントを投稿