次の方法で共有


チュートリアル: Azure Logic Apps を使用して Azure Event Grid を使用して受信した Azure Service Bus イベントに応答する

このチュートリアルでは、Azure Logic Apps を使用して Azure Event Grid を使用して受信した Azure Service Bus イベントに応答する方法について説明します。

[前提条件]

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

Service Bus 名前空間を作成する

Azure portal を使用して Service Bus トピックとそのサブスクリプションを作成するためのクイックスタートに関するチュートリアルの手順に従って、次のタスクを実行します。

  • Premium Service Bus 名前空間を作成します。
  • 接続文字列を取得します。
  • Service Bus トピックを作成します。
  • トピックへのサブスクリプションを作成します。 このチュートリアルで必要なサブスクリプションは 1 つだけです。そのため、サブスクリプション S2 および S3 を作成する必要はありません。

Service Bus トピックにメッセージを送信する

このセクションでは、サンプル アプリケーションを使用して、前のセクションで作成した Service Bus トピックにメッセージを送信します。

  1. GitHub azure-service-bus リポジトリをクローンするか、zip ファイルをダウンロードし、解凍してファイルを抽出します。

  2. Visual Studio で \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 フォルダーに移動し、SBEventGridIntegration.sln ファイルを開きます。

  3. ソリューション エクスプローラー ウィンドウでMessageSender プロジェクトを展開し、Program.csを選択します

  4. <SERVICE BUS NAMESPACE - CONNECTION STRING> を Service Bus 名前空間への接続文字列で置き換え、<TOPIC NAME> をトピックの名前で置き換えます。

    const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>";
    const string TopicName = "<TOPIC NAME>";
    
  5. プログラムをビルドして実行し、Service Bus トピックに 5 つのテスト メッセージ (const int numberOfMessages = 5;) を送信します。

    コンソール アプリの出力を示すスクリーンショット。5 つのメッセージが送信されています。

Logic Apps を使用してメッセージを受信する

このセクションでは、Azure Event Grid を使用して Service Bus イベントを受信する Azure ロジック アプリを作成します。

  1. [ + リソースの作成] を選択し、[ 統合] を選択して、[ ロジック アプリ] を選択します。

    [Create a resource > Integration > Logic app]\(ロジック アプリの作成\) メニューを示すスクリーンショット。

  2. [ ロジック アプリの作成 ] ページで、次の手順に従います。

    1. [従量課金]>[マルチテナント] オプションを選択し、[選択] を選択します。

    2. Azure サブスクリプションを選択 します

    3. リソース グループを入力します。 前に作成した Service Bus 名前空間など、他のリソースに使用したリソース グループを選択します。

    4. ロジック アプリの名前を入力します。

    5. ロジック アプリの リージョン を選択します。

    6. [確認および作成]を選択します。

      [ロジック アプリの作成] ページを示すスクリーンショット。

    7. [ 確認と作成 ] ページで、[ 作成 ] を選択してロジック アプリを作成します。

  3. [ デプロイの完了 ] ページで、[ リソースに移動 ] を選択して [ロジック アプリ ] ページに移動します。

Event Grid を使用して Service Bus からメッセージを受信するステップを追加する

  1. [ 開発ツール] を展開し、[ ロジック アプリ テンプレート] を選択します。

    [空のワークフロー] オプションが選択された [ロジック アプリ デザイナー] ページを示すスクリーンショット。

  2. [空のワークフロー] を選択します。 ロジック アプリ デザイナーが開きます。

  3. デザインツールで次の手順を実行してください。

    1. [ トリガーの追加] を選択し、 Event Grid を検索します。

    2. [リソース イベントが発生したとき] を選択します。

      Event Grid トリガーが選択された Logic Apps デザイナーを示すスクリーンショット。

  4. [サインイン] を選択します。

    [サインイン] ボタンが選択されている Logic Apps デザイナーを示すスクリーンショット。

  5. [ アカウントへのサインイン ] ページで、Azure へのサインインに使用するアカウントを選択します。

  6. [ リソース イベントが発生したとき ] ページで、次の手順を実行します。

    1. [リソースの種類] で、[Microsoft.ServiceBus.Namespaces] を選択します。

    2. Azure のサブスクリプションを選択します。

    3. [リソース名] で、Service Bus 名前空間を選択します。

    4. [ 詳細パラメーター] で、下矢印を選択します。

    5. [サフィックス フィルター] を選択し、ドロップダウン リストの外側にフォーカスを移動します。

      サフィックス フィルター型の新しいパラメーターの追加を示すスクリーンショット。

    6. [サフィックス フィルター] に、Service Bus トピック サブスクリプションの名前を入力します。

      Service Bus 名前空間の接続構成を含む Logic Apps デザイナーを示すスクリーンショット。

  7. +記号を選択し、[アクションの追加] を選択します。

    1. Service Bus を検索します。

      Service Bus の選択を示すスクリーンショット。

    2. [ 詳細を表示 ] を選択し、[ トピック サブスクリプションからメッセージを取得する (ピーク ロック)] を選択します。

      [トピック サブスクリプションからメッセージを取得する] が選択されている Logic Apps デザイナーを示すスクリーンショット。

    3. 次の手順に従います。

      1. 接続名を入力します。 たとえば、 トピック サブスクリプションからメッセージを取得します

      2. 認証の種類アクセス キーに設定されていることを確認します。

      3. [ 接続文字列] で、接続文字列をコピーして、先ほど保存した Service Bus 名前空間に貼り付けます。

      4. [新規作成] を選択します。

        Service Bus 接続文字列が指定された Logic Apps デザイナーを示すスクリーンショット。

    4. トピックとサブスクリプションを選択します。

      Service Bus トピックとサブスクリプションが指定された Logic Apps デザイナーを示すスクリーンショット。

受信したメッセージを処理して完了するステップを追加する

このセクションでは、受信したメッセージを電子メールで送信し、メッセージを完了する手順を追加します。 実際のシナリオでは、メッセージを完了する前にロジック アプリでメッセージを処理します。

foreach ループを追加する

  1. +記号を選択し、[アクションの追加] を選択します。

  2. [それぞれ] を検索して選択します。

    選択された For-each 操作を示すスクリーンショット。

  3. の手順の出力を選択するには、稲妻を選択するか、「 / 」と入力して、[ 動的コンテンツの挿入] を選択します。

  4. [トピック サブスクリプションからメッセージを取得する (ピークロック)][本文] を選択します。

    各入力の選択を示すスクリーンショット。

foreach ループ内にステップを追加して、メッセージ本文を含む電子メールを送信する

  1. For Each ループで、+を選択し、[アクションの追加] を選択します。

    For-each ループの [+] ボタンの選択を示すスクリーンショット。

  2. Office 365 を検索し、[詳細を表示] を選択します。

  3. 検索結果で Office 365 Outlook を選択します。

    Office 365 の選択を示すスクリーンショット。

  4. アクションの一覧で、[ 電子メールの送信 (V2)] を選択します。

    [電子メールの送信] 操作の選択を示すスクリーンショット。

  5. [ サインイン] を選択し、手順に従って Office 365 Outlook への接続を作成します。

  6. [ 電子メールの送信 (V2)] ウィンドウで、次の手順に従います。

  7. [本文] のテキスト ボックス内を選択し、次の手順に従います。

    1. 宛先にメールアドレスを入力します。

    2. [件名] に、「Service Bus トピックのサブスクリプションから受信したメッセージ」と入力します。

    3. [本文] で式を選択するか、「/」と入力し、[式の挿入] を選択します。

    4. 次の式を入力します。

      base64ToString(items('For_each')?['ContentData'])
      
    5. [] を選択し、[] を追加します。

      [電子メールの送信] アクティビティの [本文] の式を示すスクリーンショット。

foreach ループに別のアクションを追加してメッセージを完了する

  1. For Each ループで、+を選択し、[アクションの追加] を選択します。

    1. Service Bus を検索します。

    2. アクションの一覧から トピック サブスクリプションの [完了] メッセージ を選択します。

      トピック サブスクリプションの [メッセージの完了] の選択を示すスクリーンショット。

    3. Service Bus トピックを選択します。

    4. トピックのサブスクリプションを選択します。

    5. [ メッセージのロック トークン] で、式を選択するか、「 / 」と入力し、[式の挿入] を選択します。

    6. [ 動的コンテンツ ] を選択し、[ ロック トークン] を選択します。 [] を選択し、[] を追加します。

      ロック トークン フィールドを示すスクリーンショット。

  2. Logic Apps デザイナーのツール バーで [保存] を選択して、ロジック アプリを保存します。

    設計されたロジック アプリの [保存] ボタンを示すスクリーンショット。

アプリをテストする

  1. テスト メッセージをトピックにまだ送信していない場合は、「 Service Bus へのメッセージの送信」トピック セクションの手順に従って、トピックにメッセージを送信します。

  2. ロジック アプリの [概要 ] ページに移動します。 次に、下部ウィンドウの [ 実行履歴 ] タブを選択します。 ロジック アプリで、トピックに送信されたメッセージが実行されていることがわかります。 ロジック アプリが実行されるまでに数分かかる場合があります。 ツール バーの [ 最新の情報に更新 ] を選択して、ページを更新します。

    ロジック アプリの実行履歴を示すスクリーンショット。

  3. ロジック アプリの実行を選択して詳細を表示します。 for ループで 5 つのメッセージが処理されていることに注意してください。

    選択したロジック アプリの実行の詳細を示すスクリーンショット。

  4. ロジック アプリが受信するメッセージごとにメールが届きます。

    トピック サブスクリプションから受信したメッセージを含む Outlook のスクリーンショット。

トラブルシューティング

しばらく待機して更新した後に呼び出しが表示されない場合は、次の手順に従います。

  1. メッセージが Service Bus トピックに到達したことを確認します。 [Service Bus トピック] ページの受信メッセージカウンターに注目してください。 この場合、 MessageSender アプリケーションは 1 回実行されるため、5 つのメッセージがあります。

    受信メッセージ数が選択された [Service Bus トピック] ページを示すスクリーンショット。

  2. Service Bus サブスクリプションにアクティブなメッセージがないことを確認します。

    このページにイベントが 1 つも表示されない場合、[Service Bus サブスクリプション] ページに [アクティブなメッセージ数] が表示されていないことを確認してください。 このカウンターの数値がゼロより大きい場合は、なんらかの理由により、サブスクリプションのメッセージがハンドラー関数 (イベント サブスクリプション ハンドラー) に転送されていません。 イベント サブスクリプションが正しく設定されていることを確認します。

    アクティブなメッセージ数が選択された [Service Bus サブスクリプション] ページを示すスクリーンショット。

  3. また、Service Bus 名前空間の [イベント] ページに配信済みイベントが表示されます。

    [Service Bus 名前空間] ページの [イベント] ページを示すスクリーンショット。

  4. イベントが配信されたことは、[イベント サブスクリプション] ページでも確認できます。 このページには、[イベント] ページでイベント サブスクリプションを選択することによってアクセスできます。

    配信されたイベント数が選択された [イベント サブスクリプション] ページを示すスクリーンショット。