Azure Logic Apps でのメッセージの送信、受信、バッチ処理

適用対象: Azure Logic Apps (従量課金)

複数のメッセージをグループとして特定の方法で送信および処理するには、バッチ ソリューションを作成します。 このソリューションでは、メッセージが "バッチ" に収集され、指定された条件が満たされるまで待機してから、バッチ化されたメッセージが解放されて処理されます。 バッチ処理を使うことで、ロジック アプリによるメッセージ処理の頻度を下げることができます。

この攻略ガイドでは、バッチ処理ソリューションの構築方法について説明します。同じ Azure サブスクリプション、同じ Azure リージョン内に、次の順序で 2 つのロジック アプリを作成します。

  1. "バッチ受信" ロジック アプリ。メッセージをリリースして処理する条件を指定しておくと、その条件が満たされるまでメッセージを受け取り、バッチとして収集します。 バッチ送信アプリを作成するときにバッチの送信先を選ぶことができるよう、必ずこのバッチ受信アプリを先に作成してください。

  2. "バッチ送信" ロジック アプリ (1 つまたは複数)。先に作成しておいたバッチ受信アプリにメッセージを送信します。

    バッチ送信アプリは一意のキーを指定して、そのキーに基づいてターゲット バッチを論理上のサブセットに "パーティション" (分割) することもできます。 たとえば、顧客番号は一意のキーです。 こうすることで受信アプリは、同じキーのアイテムをすべて収集し、まとめて処理することができます。

バッチ受信アプリとバッチ送信アプリは、同じ Azure サブスクリプションを共有し、"なおかつ" 同じ Azure リージョンを共有している必要があります。 異なる場合は互いを認識できず、バッチ送信アプリを作成するときにバッチ受信アプリを選択できません。

前提条件

制限事項

  • リリース後にバッチ内のコンテンツをチェックするには、リリースされたコンテンツとソースを比較する必要があります。

  • バッチを早期にリリースするには、トリガーにバッチがまだある間に、このガイドで説明されるバッチ レシーバーのリリース条件を変更する必要があります。 ただし、トリガーは未送信のメッセージに対して更新後のリリース条件を使用します。

バッチ受信アプリの作成

バッチにメッセージを送信するには、その送信先となるバッチがあらかじめ存在していなければなりません。 そのためまず、Batch トリガーを開始する "バッチ受信" ロジック アプリを作成する必要があります。 そうすることで、"バッチ送信" ロジック アプリを作成するときに、そのバッチ受信ロジック アプリを選択することができます。 メッセージをリリースして処理する条件を指定しておくと、バッチ受信アプリは、その条件が満たされるまでメッセージを収集し続けます。 バッチ受信アプリは、バッチ送信アプリについての情報を一切必要としませんが、バッチ送信アプリには、どこにメッセージを送信すべきかの情報が必要です。

  1. Azure portal または Visual Studio で、BatchReceiver という名前のロジック アプリを作成します

  2. ワークフロー デザイナーで、ロジック アプリのワークフローを開始するバッチ トリガーを追加します。 検索ボックスに「batch」と入力して、このトリガーを選択します: batch

  3. バッチ受信アプリに以下のプロパティを設定します。

    プロパティ 説明
    バッチ モード - - : リリース条件をバッチ トリガー内に定義する場合に使用します
    - - : 統合アカウントを通じてリリース条件の構成を複数定義する場合に使用します。 統合アカウントであれば、これらの構成をすべて 1 か所で保持することができ、別個のロジック アプリに分ける必要はありません。
    バッチ名 バッチの名前 (この例では "TestBatch")。インライン バッチ モードにのみ適用されます。
    リリース条件 インライン バッチ モードにのみ適用されます。個々のバッチを処理する前に満たすべき条件を選択します。

    - - : バッチによって収集されたメッセージの数に基づいてバッチをリリースします。
    - - : そのバッチによって収集されたすべてのメッセージの合計サイズ (バイト) に基づいてバッチをリリースします。
    - - : 間隔と頻度を指定する定期的なスケジュールに基づいてバッチをリリースします。 詳細オプションでは、タイム ゾーンを選択し、開始日時を指定することもできます。
    - - : 指定した条件をすべて使用します。

    メッセージ数 バッチとして収集するメッセージの数 (10 件など)。 バッチの制限は、8,000 メッセージです。
    バッチ サイズ バッチで収集する合計サイズ (10 MB など)。 バッチ サイズの上限は 80 MB です。
    [スケジュール] バッチをリリースする間隔と頻度 (10 分など)。 最小間隔は 60 秒 (1 分) です。 分の小数値は 1 分単位に切り上げられます。 タイム ゾーンまたは開始日時を指定するには、 [新しいパラメーターの追加] 一覧を開き、対応するプロパティを選択します。

    Note

    バッチ処理はしたが未送信のメッセージがトリガーにまだある間に、リリース条件を変更すると、そのトリガーでは、未送信のメッセージを処理するために、更新されたリリース条件が使用されます。

    この例では、すべての条件を示していますが、ご自分のテストを行う場合は、条件を 1 つだけ試してください。

    バッチ トリガーの詳細を指定する

  4. それぞれのバッチを処理するアクションを少なくとも 1 つ追加します。

    この例では、バッチ トリガーが起動したときにメールを送信するアクションを追加します。 バッチのメッセージが 10 件に達するか、10 MB に達するか、または 10 分が経過すると、トリガーが作動してメールが送信されます。

    1. バッチ トリガーで、 [新しいステップ] を選択します。

    2. 検索ボックスに、フィルターとして「send email」と入力します。 電子メール プロバイダーに基づいて、電子メール コネクタを選択します。

      たとえば、職場または学校アカウント (@fabrikam.com や @fabrikam.onmicrosoft.com など) がある場合は、@fabrikam.com コネクタを選択します。 個人用アカウント (@outlook.com、@hotmail.com など) がある場合は、@outlook.com コネクタを選択します。 この例では Microsoft 365 Outlook コネクタを使用します。

    3. たとえば、プロバイダーに対して "メールの送信" アクションを選択します。

      電子メール プロバイダーの

  5. メッセージに従ってメール アカウントにサインインします。

  6. 追加したアクションのプロパティを設定します。

    • [宛先] ボックスに、受信者の電子メール アドレスを入力します。 テスト目的で自分の電子メール アドレスを使用できます。

    • [件名] ボックスで、動的なコンテンツの一覧が表示されたら、 [パーティション名] フィールドを選択します。

      動的なコンテンツの一覧で [パーティション名] を選択する

      後のバッチ送信アプリで、ターゲット バッチを分割する一意のパーティション キーを指定し、分割された論理上のサブセットにメッセージを送信することができます。 各セットにはバッチ送信ロジック アプリで生成された固有の番号があります。 この機能により複数のサブセットを持つ単一のバッチを使用できるようになり、各サブセットを指定した名前で定義できます。

      重要

      パーティションには 5,000 メッセージまたは 80 MB という制限があります。 どちらかの条件が満たされた場合、ユーザーによって定義されたリリース条件が満たされていなくても、Logic Apps はバッチをリリースします。

    • [本文] ボックスで、動的なコンテンツの一覧が表示されたら、 [メッセージ ID] フィールドを選択します。

      ワークフロー デザイナーでは、メール送信アクションを囲む For each ループが自動的に追加されます。これは、そのアクションで、前のアクションの出力をバッチではなくコレクションとして処理するためです。

      [本文] で [メッセージ ID] を選択する

  7. ロジック アプリを保存します。 バッチ受信アプリの作成は以上です。

    ロジック アプリを保存する

    重要

    Visual Studio を使用している場合は、次のセクションに進む前に、まず、バッチ受信アプリ ロジック アプリを Azure に "デプロイ" します。 そうしないと、バッチ送信アプリを作成するときにバッチ受信アプリを選択できません。

バッチ送信アプリの作成

次に、バッチ受信ロジック アプリにメッセージを送信するバッチ送信ロジック アプリを作成します。 バッチ送信アプリにはそれぞれ、バッチ受信アプリ、バッチ名、メッセージ コンテンツなど各種の設定を指定します。 一意のパーティション キーを指定してバッチを論理上のサブセットに分割し、そのキーを持つメッセージを収集するように設定することもできます。

  • バッチ送信アプリを作成するときに、その送信先バッチとして既存のバッチ受信アプリを選択できるよう、必ず先にバッチ受信アプリを作成してデプロイしてください。 バッチ受信アプリは、バッチ送信アプリについての情報を一切必要としませんが、バッチ送信アプリには、どこにメッセージを送信すべきかの情報が必要です。

  • バッチ受信アプリとバッチ送信アプリは、同じ Azure リージョンを共有し、"なおかつ" 同じ Azure サブスクリプションを共有している必要があります。 異なる場合は互いを認識できず、バッチ送信アプリを作成するときにバッチ受信アプリを選択できません。

  1. 次の名前の別のロジック アプリを作成します: BatchSender

    1. 検索ボックスに、フィルターとして「recurrence」と入力します。 トリガーの一覧から、定期的なアイテム

      繰り返しトリガーを追加する

    2. 送信ロジック アプリの間隔と頻度を毎分に設定します。

      繰り返しトリガーの頻度と間隔を設定する

  2. メッセージをバッチに送信する新しいアクションを追加します。

    1. [繰り返し] トリガーで、 [新しいステップ] を選択します。

    2. 検索ボックスにフィルターとして「batch」と入力し、次のアクションを選択します: batch

      [バッチ トリガーを含む Logic Apps ワークフローを選択します] を選択します

      一覧が表示され、バッチ トリガーを持ち、お使いのバッチ送信ロジック アプリと同じ Azure リージョン "および" Azure サブスクリプションに存在しているロジック アプリのみが示されます。

    3. ロジック アプリの一覧から、あらかじめ作成しておいたバッチ受信ロジック アプリを選択します。

      バッチ受信ロジック アプリを選択する

      重要

      Visual Studio を使用している場合、選択するバッチ受信アプリが表示されないときは、バッチ受信アプリが既に作成されて Azure にデプロイ済みであることを確認します。 まだ済んでいない場合は、バッチ受信ロジック アプリを Azure にデプロイする方法を確認してください。

    4. アクションの一覧から、次のアクションを選択します: Batch_messages - your-logic-app-name

      次のアクションを選択します:

  3. バッチ送信アプリのプロパティを設定します。

    プロパティ 説明
    バッチ名 受信ロジック アプリによって定義されたバッチ名 (この例では TestBatch)

    重要:バッチ名は実行時に検証されます。また、受信ロジック アプリによって指定された名前と一致している必要があります。 バッチ名を変更すると、バッチ送信アプリが失敗します。

    メッセージのコンテンツ 送信するメッセージのコンテンツ。

    Note

    [トリガー名][ワークフロー] プロパティの値は、選択したロジック アプリから自動的に設定されます。

    この例では、次の式を追加します。この場合、バッチに送信するメッセージのコンテンツには、現在の日付と時刻が挿入されます。

    1. [メッセージのコンテンツ] ボックス内をクリックします。

    2. 動的コンテンツ リストが表示されたら、 [式] を選択します。

    3. utcnow() という式を入力し、utcnow() を選択します。

      [メッセージのコンテンツ] で [式] を選択し、「utcnow()」と入力して [OK] を選択します。

  4. ここでバッチのパーティションを設定します。 BatchReceiver アクションで、BatchReceiver の一覧を開き、次のプロパティを選択します。

    プロパティ 説明
    パーティション名 (省略可能) 一意のパーティション キー。ターゲット バッチを論理上のサブセットに分割し、対応するキーに基づいてメッセージを収集する目的で使用されます。
    メッセージ ID (省略可能) メッセージ ID。空のときは、生成されたグローバル一意識別子 (GUID) になります。

    この例では、1 から 5 の範囲の乱数を生成する式を [パーティション名] ボックスに追加しています。 [メッセージ ID] ボックスは空のままにしてください。

    1. [パーティション名] ボックス内をクリックして、動的コンテンツ リストを表示します。

    2. 動的コンテンツ リストの [式] を選択します。

    3. rand(1,6) という式を入力し、rand(1,6) を選択します。

      ターゲット バッチのパーティションをセットアップする

      この rand 関数は 1 から 5 の間の数字を生成します。 これにより、この式が動的に設定した 5 つの番号のパーティションにこのバッチが分割されます。

  5. ロジック アプリを保存します。 送信ロジック アプリは次の例のようになります。

    送信ロジック アプリを保存する

ロジック アプリをテストする

バッチ ソリューションをテストするには、数分間ロジック アプリを実行したままにします。 間もなく、同じパーティション キーを持つ電子メールを 5 個ずつ取得し始めます。

バッチ送信ロジック アプリが 1 分おきに実行され、1 から 5 までの乱数が生成されます。 バッチ送信アプリは、メッセージを送信するターゲット バッチのパーティション キーとしてこの乱数を使用します。 バッチに同じパーティション キーの項目が 5 つ入るたびにバッチ受信ロジック アプリが作動し、各メッセージについてメールを送信します。

重要

テストが完了したら、BatchSender ロジック アプリを無効にしてメッセージの送信を停止し、受信トレイのオーバーロードを防止します。

次のステップ