トリガーのコンカレンシー制御と最大実行待機数について

Last Update: feedback 共有

こんにちは。Azure Integration サポート チームの髙橋です。

トリガーに設定可能なコンカレンシー制御と最大実行待機数について説明します。

こんな方におすすめです

  • トリガーを順次実行とされたい方
  • トリガーの並列実行数を制御されたい方

関連情報

トリガーのデフォルト設定

従量課金タイプおよび Standard タイプの Logic Apps においては、デフォルトではコンカレンシー制御は「オフ」の状態であり、
トリガーが無制限に並列実行できる設定となっております。

コンカレンシー制御の変更

トリガーの設定にて、コンカレンシー制御を「オン」とし、並列実行する数を制御することが可能です。
一度コンカレンシー制御を「オン」としますと、元に戻すことができかねますのでご注意ください。

以下の例では「HTTP 要求の受信時」トリガーを利用しております。
右上の「…」を押下し、「設定」を選択します。

「コンカレンシー制御」にて「上限」を「オン」とします。
「並列処理の次数」にて並列して起動するトリガーの数を制御することが可能です。
以下の例では、順次実行とするために「並列処理の次数」を「1」としております。

以下の公開情報に記載がございますが、「並列処理の次数」には 1 ~ 100 をご設定いただけます。

最大実行待機数の設定

トリガーのコンカレンシー制御にて「並列処理の次数」で設定した値の数だけ並列処理が既に行われていて、
さらに新しいリクエストがトリガーに送られた場合には、先の処理が終わるまで待機させることが可能です。
このときの待機させる数をご設定いただけます。
最小値と最大値につきましては、以下の公開情報に記載がございます。

[ロジック アプリ] - [<対象の ロジック アプリ>] - [開発ツール - ロジック アプリ コード ビュー] と遷移します。
“triggers” > トリガー名 > “runtimeConfiguration” > “concurrency” に、”maximumWaitingRuns” という項目を追加します。
値には、待機させる最大実行数 (今回の例では 2 ) を指定いたします。

上記の設定を行いますと、以下のような動作となります。
※ 以下の動作確認では、「並列処理の次数」を「1」最大実行待機数を「2」としており、従量課金タイプの Logic Apps にて手動でトリガーを起動しております。

まず一つ目の処理の実行を開始いたします。

一つ目の処理が実行されている間に、新しくトリガーを起動しますと以下のように 2 件まで待機いたします。

最大実行待機数を超えてトリガーを起動しようとしますと、以下のようにエラーが発生いたします。

トリガーを外部から呼び出す場合、呼び出し元には 429 (Too Many Requests) が返却され、呼び出しに失敗いたします。
この場合、Logic Apps 側の「トリガーの履歴」にも残りませんので、クライアント側にて時間を空けて再試行する等のご対応が必要となります。

1
2
3
4
5
6
{
"error": {
"code": "WorkflowMaximumWaitingRunCountExceeded",
"message": "The number of waiting workflow runs '2' has exceeded the maximum allowed limit of '2'. Try increasing the value of 'maximumWaitingRuns' in trigger concurrency configuration."
}
}

また、最大実行待機数を上記のように明示的に設定しない場合には、以下の公開情報の通り「10 回の実行 + 同時実行の数」となります。(最大は 100 でございます。)

たとえば「並列処理の次数」が「1」の場合には、「10 回の実行 + 1」となり、11 件まで待機させることが可能です。

まとめ

本記事では、トリガーのコンカレンシー制御の設定方法、最大実行待機数についてご案内いたしました。
本記事が少しでもお役に立ちましたら幸いです。

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。