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

このチュートリアルでは、Azure Logic Apps を使用して、Azure Event Grid 経由で受信した Azure Service Bus イベントに応答する方法について説明します。In this tutorial, you learn how to respond to Azure Service Bus events that are received via Azure Event Grid by using Azure Logic Apps.

前提条件Prerequisites

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。If you don't have an Azure subscription, create a free account before you begin.

Service Bus 名前空間を作成するCreate a Service Bus namespace

このチュートリアルの手順に従ってください。クイック スタート: Azure portal を使用して Service Bus トピックとそのサブスクリプションを作成する」で確認し、次のタスクを実行します: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:

  • Premium Service Bus 名前空間を作成します。Create a premium Service Bus namespace.
  • 接続文字列を取得します。Get the connection string.
  • Service Bus トピックを作成します。Create a Service Bus topic.
  • トピックへのサブスクリプションを作成します。Create a subscription to the topic. このチュートリアルで必要なサブスクリプションは 1 つだけです。そのため、サブスクリプション S2 および S3 を作成する必要はありません。You need only one subscription in this tutorial, so no need to create subscriptions S2 and S3.

Service Bus トピックにメッセージを送信するSend messages to the Service Bus topic

この手順では、サンプル アプリケーションを使用して、前の手順で作成した Service Bus トピックにメッセージを送信します。In this step, you use a sample application to send messages to the Service Bus topic you created in the previous step.

  1. GitHub の azure-service-bus リポジトリを複製します。Clone the GitHub azure-service-bus repository.

  2. Visual Studio で \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegration フォルダーに移動し、SBEventGridIntegration.sln ファイルを開きます。In Visual Studio, go to the \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegration folder, and then open the SBEventGridIntegration.sln file.

  3. ソリューション エクスプローラー ウィンドウで、 [MessageSender] プロジェクトを展開し、 [Program.cs] を選択します。In the Solution Explorer window, expand the MessageSender project, and select Program.cs.

  4. <SERVICE BUS NAMESPACE - CONNECTION STRING> を Service Bus 名前空間への接続文字列で置き換え、<TOPIC NAME> をトピックの名前で置き換えます。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. 5 つのテスト メッセージを Service Bus トピックに送信するプログラム (const int numberOfMessages = 5;) をビルドして実行します。Build and run the program to send 5 test messages (const int numberOfMessages = 5;) to the Service Bus topic.

    コンソールのアプリ出力

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

この手順では、Service Bus イベントを Azure Event Grid 経由で受信する Azure ロジック アプリを作成します。In this step, you create an Azure logic app that receives Service Bus events via Azure Event Grid.

  1. Azure portal で、ロジック アプリを作成します。Create a logic app in the Azure portal.

    1. [+ リソースの作成][統合][ロジック アプリ] の順に選択します。Select + Create a resource, select Integration, and then select Logic App.
    2. [ロジック アプリ - 作成] ページで、ロジック アプリの 名前 を入力します。On the Logic App - Create page, enter a name for the logic app.
    3. Azure サブスクリプション を選択します。Select your Azure subscription.
    4. [リソース グループ] では [既存のものを使用] を選択し、以前に作成済みの、他のリソース (Azure 関数、Service Bus 名前空間など) に使用したリソース グループを選択します。Select Use existing for the Resource group, and select the resource group that you used for other resources (like Azure function, Service Bus namespace) that you created earlier.
    5. ロジック アプリの 場所 を選択します。Select the Location for the logic app.
    6. [確認および作成] を選択します。Select Review + Create.
    7. [確認および作成] ページで [作成] を選択してロジック アプリを作成します。On the Review + Create page, select Create to create the logic app.
  2. [Logic Apps デザイナー] ページの [テンプレート] で、 [空のロジック アプリ] を選択します。On the Logic Apps Designer page, select Blank Logic App under Templates.

  3. デザイナーで、次の手順を実行します。On the designer, do the following steps:

    1. Event Grid を検索します。Search for Event Grid.

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

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

  4. [サインイン] を選択して、Azure 資格情報を入力し、 [Allow Access](アクセスを許可する) を選択します。Select Sign in, enter your Azure credentials, and select Allow Access.

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

    1. Azure サブスクリプションを選択します。Select your Azure subscription.
    2. [リソースの種類] で、 [Microsoft.ServiceBus.Namespaces] を選択します。For Resource Type, select Microsoft.ServiceBus.Namespaces.
    3. [リソース名] で、Service Bus 名前空間を選択します。For Resource Name, select your Service Bus namespace.
    4. [新しいパラメーターの追加] を選択し、 [サフィックス フィルター] を選択します。Select Add new parameter, and select Suffix Filter.
    5. [サフィックス フィルター] で、Service Bus トピックの 2 つ目のサブスクリプションの名前を入力します。For Suffix Filter, enter the name of your second Service Bus topic subscription. Logic Apps デザイナー - イベントの構成Logic Apps Designer - configure event
  6. デザイナーで [+ 新しいステップ] を選択し、次の手順を実行します。Select + New Step in the designer, and do the following steps:

    1. Service Bus を検索します。Search for Service Bus.

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

    3. [アクション] 一覧から [メッセージを取得します] を選択します。Select for Get messages in the Actions list.

    4. [トピック サブスクリプションからメッセージを取得する (ピークロック)] を選択します。Select Get messages from a topic subscription (peek-lock).

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

    5. 接続名 を入力します。Enter a name for the connection. 次に例を示します。「Get messages from the topic subscription」。そして、Service Bus 名前空間を選択します。For example: Get messages from the topic subscription, and select the Service Bus namespace.

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

    6. RootManageSharedAccessKey を選び、 [作成] を選択します。Select RootManageSharedAccessKey, and then select Create.

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

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

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

  7. [+ 新しいステップ] を選択し、次の手順を実行します。Select + New step, and do the following steps:

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

    2. アクションの一覧から [トピック サブスクリプション内のメッセージを完了する] を選択します。Select Complete the message in a topic subscription from the list of actions.

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

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

    5. [メッセージのロック トークン] で、 [動的なコンテンツ] から [ロック トークン] を選択します。For Lock token of the message, select Lock Token from the Dynamic content.

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

  8. Logic Apps デザイナーのツールバーの [保存] を選択して、ロジック アプリを保存します。Select Save on the toolbar on the Logic Apps Designer to save the logic app.

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

  9. まだテスト メッセージをトピックに送信していない場合は、「Service Bus トピックにメッセージを送信する」セクションの手順に従って、トピックにメッセージを送信します。If you haven't already sent test messages to the topic, follow instructions in the Send messages to the Service Bus topic section to send messages to the topic.

  10. お使いのロジック アプリの [概要] ページに切り替えます。Switch to the Overview page of your logic app. 送信されたメッセージの [実行の履歴] に、ロジック アプリの実行が表示されます。You see the logic app runs in the Runs history for the messages sent. ロジック アプリの実行が確認できるまでに数分かかる場合があります。It could take a few minutes before you see the logic app runs. ツール バーの [Refresh](最新の情報に更新) を選択して、ページを最新の情報に更新してください。Select Refresh on the toolbar to refresh the page.

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

  11. ロジック アプリの実行を選択して詳細を確認します。Select a logic app run to see the details. for ループで 5 つのメッセージが処理されていることに注目してください。Notice that it processed 5 messages in the for loop.

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

トラブルシューティングTroubleshoot

しばらく待って最新の情報に更新しても呼び出しが表示されない場合は、次の手順に従います。If you don't see any invocations after waiting and refreshing for sometime, follow these steps:

  1. メッセージが Service Bus トピックに到達したことを確認します。Confirm that the messages reached the Service Bus topic. [Service Bus トピック] ページの 受信メッセージ カウンターに注目してください。See the incoming messages counter on the Service Bus Topic page. この場合、MessageSender アプリケーションを 2 回実行したので、10 件のメッセージが表示されています (各実行につき 5 件のメッセージ)。In this case, I ran the MessageSender application twice, so I see 10 messages (5 messages for each run).

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

  2. Service Bus サブスクリプションに アクティブなメッセージがない ことを確認します。Confirm that there are no active messages at the Service Bus subscription. このページにイベントが 1 つも表示されない場合、 [Service Bus Subscription](Service Bus サブスクリプション) ページに [アクティブなメッセージ数] が表示されていないことを確認してください。If you don't see any events on this page, verify that the Service Bus Subscription page doesn't show any Active message count. このカウンターの数値がゼロより大きい場合は、なんらかの理由により、サブスクリプションのメッセージがハンドラー関数 (イベント サブスクリプション ハンドラー) に転送されていません。If the number for this counter is greater than zero, the messages at the subscription aren't forwarded to the handler function (event subscription handler) for some reason. イベント サブスクリプションが適切に設定されていることを確認してください。Verify that you've set up the event subscription properly.

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

  3. また、Service Bus 名前空間の [イベント] ページに 配信済みイベント が表示されます。You also see delivered events on the Events page of the Service Bus namespace.

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

  4. イベントが配信されたことは、 [イベント サブスクリプション] ページでも確認できます。You can also see that the events are delivered on the Event Subscription page. このページには、 [イベント] ページでイベント サブスクリプションを選択することによってアクセスできます。You can get to this page by selecting the event subscription on the Events page.

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

次のステップNext steps