このチュートリアルでは、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 トピックにメッセージを送信します。
GitHub azure-service-bus リポジトリをクローンするか、zip ファイルをダウンロードし、解凍してファイルを抽出します。
Visual Studio で \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 フォルダーに移動し、SBEventGridIntegration.sln ファイルを開きます。
ソリューション エクスプローラー ウィンドウで、MessageSender プロジェクトを展開し、Program.csを選択します。
<SERVICE BUS NAMESPACE - CONNECTION STRING>
を Service Bus 名前空間への接続文字列で置き換え、<TOPIC NAME>
をトピックの名前で置き換えます。const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>"; const string TopicName = "<TOPIC NAME>";
プログラムをビルドして実行し、Service Bus トピックに 5 つのテスト メッセージ (
const int numberOfMessages = 5;
) を送信します。
Logic Apps を使用してメッセージを受信する
このセクションでは、Azure Event Grid を使用して Service Bus イベントを受信する Azure ロジック アプリを作成します。
[ + リソースの作成] を選択し、[ 統合] を選択して、[ ロジック アプリ] を選択します。
[ ロジック アプリの作成 ] ページで、次の手順に従います。
[従量課金]>[マルチテナント] オプションを選択し、[選択] を選択します。
Azure サブスクリプションを選択 します。
リソース グループを入力します。 前に作成した Service Bus 名前空間など、他のリソースに使用したリソース グループを選択します。
ロジック アプリの名前を入力します。
ロジック アプリの リージョン を選択します。
[確認および作成]を選択します。
[ 確認と作成 ] ページで、[ 作成 ] を選択してロジック アプリを作成します。
[ デプロイの完了 ] ページで、[ リソースに移動 ] を選択して [ロジック アプリ ] ページに移動します。
Event Grid を使用して Service Bus からメッセージを受信するステップを追加する
[ 開発ツール] を展開し、[ ロジック アプリ テンプレート] を選択します。
[空のワークフロー] を選択します。 ロジック アプリ デザイナーが開きます。
デザインツールで次の手順を実行してください。
[ トリガーの追加] を選択し、 Event Grid を検索します。
[リソース イベントが発生したとき] を選択します。
[サインイン] を選択します。
[ アカウントへのサインイン ] ページで、Azure へのサインインに使用するアカウントを選択します。
[ リソース イベントが発生したとき ] ページで、次の手順を実行します。
[リソースの種類] で、[Microsoft.ServiceBus.Namespaces] を選択します。
Azure のサブスクリプションを選択します。
[リソース名] で、Service Bus 名前空間を選択します。
[ 詳細パラメーター] で、下矢印を選択します。
[サフィックス フィルター] を選択し、ドロップダウン リストの外側にフォーカスを移動します。
[サフィックス フィルター] に、Service Bus トピック サブスクリプションの名前を入力します。
+記号を選択し、[アクションの追加] を選択します。
Service Bus を検索します。
[ 詳細を表示 ] を選択し、[ トピック サブスクリプションからメッセージを取得する (ピーク ロック)] を選択します。
次の手順に従います。
接続名を入力します。 たとえば、 トピック サブスクリプションからメッセージを取得します。
認証の種類がアクセス キーに設定されていることを確認します。
[ 接続文字列] で、接続文字列をコピーして、先ほど保存した Service Bus 名前空間に貼り付けます。
[新規作成] を選択します。
トピックとサブスクリプションを選択します。
受信したメッセージを処理して完了するステップを追加する
このセクションでは、受信したメッセージを電子メールで送信し、メッセージを完了する手順を追加します。 実際のシナリオでは、メッセージを完了する前にロジック アプリでメッセージを処理します。
foreach ループを追加する
+記号を選択し、[アクションの追加] を選択します。
[それぞれ] を検索して選択します。
前 の手順の出力を選択するには、稲妻を選択するか、「 / 」と入力して、[ 動的コンテンツの挿入] を選択します。
[トピック サブスクリプションからメッセージを取得する (ピークロック)] で [本文] を選択します。
foreach ループ内にステップを追加して、メッセージ本文を含む電子メールを送信する
For Each ループで、+を選択し、[アクションの追加] を選択します。
Office 365 を検索し、[詳細を表示] を選択します。
検索結果で Office 365 Outlook を選択します。
アクションの一覧で、[ 電子メールの送信 (V2)] を選択します。
[ サインイン] を選択し、手順に従って Office 365 Outlook への接続を作成します。
[ 電子メールの送信 (V2)] ウィンドウで、次の手順に従います。
[本文] のテキスト ボックス内を選択し、次の手順に従います。
宛先にメールアドレスを入力します。
[件名] に、「Service Bus トピックのサブスクリプションから受信したメッセージ」と入力します。
[本文] で式を選択するか、「/」と入力し、[式の挿入] を選択します。
次の式を入力します。
base64ToString(items('For_each')?['ContentData'])
[] を選択し、[] を追加します。
foreach ループに別のアクションを追加してメッセージを完了する
For Each ループで、+を選択し、[アクションの追加] を選択します。
Logic Apps デザイナーのツール バーで [保存] を選択して、ロジック アプリを保存します。
アプリをテストする
テスト メッセージをトピックにまだ送信していない場合は、「 Service Bus へのメッセージの送信」トピック セクションの手順に従って、トピックにメッセージを送信します。
ロジック アプリの [概要 ] ページに移動します。 次に、下部ウィンドウの [ 実行履歴 ] タブを選択します。 ロジック アプリで、トピックに送信されたメッセージが実行されていることがわかります。 ロジック アプリが実行されるまでに数分かかる場合があります。 ツール バーの [ 最新の情報に更新 ] を選択して、ページを更新します。
ロジック アプリの実行を選択して詳細を表示します。 for ループで 5 つのメッセージが処理されていることに注意してください。
ロジック アプリが受信するメッセージごとにメールが届きます。
トラブルシューティング
しばらく待機して更新した後に呼び出しが表示されない場合は、次の手順に従います。
メッセージが Service Bus トピックに到達したことを確認します。 [Service Bus トピック] ページの受信メッセージカウンターに注目してください。 この場合、 MessageSender アプリケーションは 1 回実行されるため、5 つのメッセージがあります。
Service Bus サブスクリプションにアクティブなメッセージがないことを確認します。
このページにイベントが 1 つも表示されない場合、[Service Bus サブスクリプション] ページに [アクティブなメッセージ数] が表示されていないことを確認してください。 このカウンターの数値がゼロより大きい場合は、なんらかの理由により、サブスクリプションのメッセージがハンドラー関数 (イベント サブスクリプション ハンドラー) に転送されていません。 イベント サブスクリプションが正しく設定されていることを確認します。
また、Service Bus 名前空間の [イベント] ページに配信済みイベントが表示されます。
イベントが配信されたことは、[イベント サブスクリプション] ページでも確認できます。 このページには、[イベント] ページでイベント サブスクリプションを選択することによってアクセスできます。
関連コンテンツ
- Azure Event Grid について学習します。
- Azure Functions について学習します。
- Azure App Service の Logic Apps 機能の詳細を確認します。
- Azure Service Bus の詳細については、こちらを参照してください。