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

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

Prerequisites

If you don't have an Azure subscription, create a free account before you begin.

Create a Service Bus namespace

Follow instructions in this tutorial: Quickstart: Use the Azure portal to create a Service Bus topic and subscriptions to the topic to do the following tasks:

  • Create a premium Service Bus namespace.
  • Get the connection string.
  • Create a Service Bus topic.
  • Create a subscription to the topic. You need only one subscription in this tutorial, so no need to create subscriptions S2 and S3.

Send messages to the Service Bus topic

In this step, you use a sample application to send messages to the Service Bus topic you created in the previous step.

  1. Clone the GitHub azure-service-bus repository.

  2. In Visual Studio, go to the \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegration folder, and then open the SBEventGridIntegration.sln file.

  3. In the Solution Explorer window, expand the MessageSender project, and select Program.cs.

  4. Replace <SERVICE BUS NAMESPACE - CONNECTION STRING> with the connection string to your Service Bus namespace and <TOPIC NAME> with the name of the topic.

    const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>";
    const string TopicName = "<TOPIC NAME>";
    
  5. Build and run the program to send 5 test messages (const int numberOfMessages = 5;) to the Service Bus topic.

    Console app output

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

この手順では、Service Bus イベントを Azure Event Grid 経由で受信する Azure ロジック アプリを作成します。

  1. Azure portal で、ロジック アプリを作成します。

    1. [+ リソースの作成][統合][ロジック アプリ] の順に選択します。
    2. [ロジック アプリ - 作成] ページで、ロジック アプリの 名前 を入力します。
    3. Azure サブスクリプション を選択します。
    4. [リソース グループ] では [既存のものを使用] を選択し、以前に作成済みの、他のリソース (Azure 関数、Service Bus 名前空間など) に使用したリソース グループを選択します。
    5. ロジック アプリの 場所 を選択します。
    6. [確認および作成] を選択します。
    7. [確認および作成] ページで [作成] を選択してロジック アプリを作成します。
  2. [Logic Apps デザイナー] ページの [テンプレート] で、 [空のロジック アプリ] を選択します。

  3. デザイナーで、次の手順を実行します。

    1. Event Grid を検索します。

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

      Logic Apps デザイナー - Event Grid トリガーの選択

  4. [サインイン] を選択して、Azure 資格情報を入力し、 [Allow Access](アクセスを許可する) を選択します。

  5. [When a resource event occurs](リソース イベントが発生したとき) ページで、次の手順を実行します。

    1. Azure サブスクリプションを選択します。
    2. [リソースの種類] で、 [Microsoft.ServiceBus.Namespaces] を選択します。
    3. [リソース名] で、Service Bus 名前空間を選択します。
    4. [新しいパラメーターの追加] を選択し、 [サフィックス フィルター] を選択します。
    5. [サフィックス フィルター] で、Service Bus トピックの 2 つ目のサブスクリプションの名前を入力します。 Logic Apps デザイナー - イベントの構成
  6. デザイナーで [+ 新しいステップ] を選択し、次の手順を実行します。

    1. Service Bus を検索します。

    2. 一覧から [Service Bus] を選択します。

    3. [アクション] 一覧から [メッセージを取得します] を選択します。

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

      Logic Apps デザイナー - メッセージの取得アクション

    5. 接続名 を入力します。 次に例を示します。「Get messages from the topic subscription」。そして、Service Bus 名前空間を選択します。

      Logic Apps デザイナー - Service Bus 名前空間の選択

    6. RootManageSharedAccessKey を選び、 [作成] を選択します。

      Logic Apps デザイナー - 共有アクセス キーの選択

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

      トピックとサブスクリプションを選択する場所を示すスクリーンショット。

  7. [+ 新しいステップ] を選択し、次の手順を実行します。

    1. [Service Bus] を選びます。

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

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

    4. トピックに対する 2 つ目の サブスクリプション を選択します。

    5. [メッセージのロック トークン] で、 [動的なコンテンツ] から [ロック トークン] を選択します。

      Logic Apps デザイナー - メッセージを完成させる

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

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

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

  10. お使いのロジック アプリの [概要] ページに切り替えます。 送信されたメッセージの [実行の履歴] に、ロジック アプリの実行が表示されます。 ロジック アプリの実行が確認できるまでに数分かかる場合があります。 ツール バーの [Refresh](最新の情報に更新) を選択して、ページを最新の情報に更新してください。

    Logic Apps デザイナー - ロジック アプリの実行

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

    ロジック アプリの実行の詳細

トラブルシューティング

しばらく待って最新の情報に更新しても呼び出しが表示されない場合は、次の手順に従います。

  1. メッセージが Service Bus トピックに到達したことを確認します。 [Service Bus トピック] ページの 受信メッセージ カウンターに注目してください。 この場合、MessageSender アプリケーションを 2 回実行したので、10 件のメッセージが表示されています (各実行につき 5 件のメッセージ)。

    [Service Bus トピック] ページ - 受信メッセージ

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

    Service Bus サブスクリプション側におけるアクティブなメッセージ数

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

    [イベント] ページ - 配信済みイベント

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

    [イベント サブスクリプション] ページ - 配信済みイベント

次のステップ