教學課程:使用 Azure Logic Apps,回應透過 Azure 事件方格接收到的 Azure 服務匯流排事件

在本教學課程中,您將了解如何使用 Azure Logic Apps 來回應透過 Azure 事件方格接收到的 Azure 服務匯流排事件。

必要條件

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

建立服務匯流排命名空間

請遵循下列教學課程中的指示:快速入門:使用 Azure 入口網站建立服務匯流排主題和主題的訂用帳戶,以執行下列工作:

  • 建立進階服務匯流排命名空間。
  • 取得連接字串。
  • 建立服務匯流排主題。
  • 針對主題建立訂用帳戶。 在本教學課程中,您只需要一個訂用帳戶,因此不需要建立訂用帳戶 S2 和 S3。

對服務匯流排主題傳送訊息

在此步驟中,您會使用範例應用程式,將訊息傳送至您在上一個步驟中建立的服務匯流排主題。

  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> 取代為服務匯流排命名空間的連接字串;同時將 <TOPIC NAME> 取代為主題名稱。

    const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>";
    const string TopicName = "<TOPIC NAME>";
    
  5. 建置並執行程式,以將 5 個測試訊息 (const int numberOfMessages = 5;) 傳送至服務匯流排主題。

    Console app output

使用 Logic Apps 接收訊息

在此步驟中,您會建立 Azure 邏輯應用程式,以透過 Azure 事件方格接收服務匯流排事件。

  1. 依序選取 [+ 建立資源]、[整合] 和 [邏輯應用程式]

    Screenshot that shows the Create a resource -> Integration -> Logic app menu.

  2. 建立邏輯應用程式頁面上,遵循下列步驟:

    1. 選取您的 Azure 訂用帳戶
    2. 在 [資源群組] 中選取 [使用現有項目],然後選取要用於稍早所建立其他資源 (例如 Azure 函式、服務匯流排命名空間) 的資源群組。
    3. 輸入邏輯應用程式的名稱
    4. 選取邏輯應用程式的區域
    5. 針對方案類型,選取使用量
    6. 選取 [檢閱 + 建立] 。 Screenshot that shows the Create a logic app page.
    7. 在 [檢閱 + 建立] 頁面上選取 [建立],以建立邏輯應用程式。
  3. 部署完成頁面上,選取移至資源以瀏覽至邏輯應用程式頁面。

  4. 在 [Logic Apps 設計工具] 頁面上,選取 [範本] 底下的 [空白邏輯應用程式]

透過事件方格新增從服務匯流排接收訊息的步驟

  1. 邏輯應用程式頁面上,選取左側功能表上的邏輯應用程式設計工具

  2. 在右側面板的範本底下,選取空白邏輯應用程式

    Screenshot that shows the Logic app designer page with the Blank logic app option selected.

  3. 在設計工具上執行下列步驟:

    1. 搜尋事件方格

    2. 選取 [發生資源事件時 - Azure 事件方格]

      Screenshot that shows the Logic Apps Designer with Event Grid trigger selected.

  4. 選取 [登入]

    Screenshot that shows the Logic Apps Designer with the Sign-in button selected.

  5. 登入您的帳戶頁面上,選取您想要用來登入 Azure 的帳戶。 1.

  6. 在 [發生資源事件時] 頁面上,執行下列步驟:

    1. 選取 Azure 訂閱。

    2. 在 [資源類型] 中,選取 [Microsoft.ServiceBus.Namespaces]

    3. 在 [資源名稱] 中,選取您的服務匯流排命名空間。

    4. 選取 [新增參數]、選取 [尾碼篩選],然後將焦點移至下拉式清單外部。

      Screenshot that shows adding of a new parameter of type Suffix filter.

    5. 在 [尾碼篩選] 中,輸入服務匯流排主題訂用帳戶的名稱。

      Screenshot that shows the Logic Apps Designer with connection configuration for the Service Bus namespace.

  7. 在設計工具中選取 [+ 新增步驟],然後執行下列步驟:

    1. 搜尋服務匯流排

    2. 在清單中選取 [服務匯流排]

      Screenshot that shows the selection of Service Bus.

    3. 在 [動作] 清單中針對 [取得訊息] 進行選取。

    4. 選取 [從主題訂用帳戶取得訊息 (查看鎖定)]

      Screenshot that shows the Logic Apps Designer with Get messages from a topic subscription selected.

    5. 執行下列步驟:

      1. 輸入連線的名稱。 例如:從主題訂用帳戶取得訊息

      2. 確認驗證類型設定為存取金鑰

      3. 針對連接字串,請將連接字串複製並貼到您稍早儲存的服務匯流排命名空間。

      4. 選取 建立

        Screenshot that shows the Logic Apps Designer with the Service Bus connection string specified.

    6. 選取您的主題訂用帳戶

      Screenshot that shows the Logic Apps Designer with the Service Bus topic and subscription specified.

新增步驟以處理和完成已接收的訊息

在此步驟中,新增在電子郵件中傳送已接收訊息的步驟,然後完成訊息。 在真實世界的案例中,必須先處理邏輯應用程式中的訊息,才能完成訊息。

新增 foreach 迴圈

  1. 選取 + 新步驟

  2. 搜尋控制項,然後加以選取。

    Screenshot that shows the Control category.

  3. 在 [動作] 清單中,選取 [For each]

    Screenshot that shows the For-each operation selected.

  4. 針對 [選取先前步驟的輸出] (視需要按一下文字方塊),請選取 [從主題訂用帳戶取得訊息 (查看鎖定)] 底下的 [本文]

    Screenshot that shows the selection of For each input.

在 foreach 迴圈內新增步驟,以傳送含有訊息本文的電子郵件

  1. For Each 迴圈中,選取 [新增動作]

    Screenshot that shows the selection of Add an action button in the For-each loop.

  2. 在 [搜尋連接器與動作] 文字方塊中,輸入 Office 365

  3. 在搜尋結果中選取 [Office 365 Outlook]

    Screenshot that shows the selection of Office 365.

  4. 在動作清單中,選取 [傳送電子郵件 (V2)]

    Screenshot that shows the selection of Send an email operation.

  5. 選取登入,然後遵循步驟以建立連向 Office 365 Outlook 的連線。

  6. 在 [傳送電子郵件 (V2)] 視窗中,遵循下列步驟:

  7. 選取 [本文] 的文字方塊,然後遵循下列步驟:

    1. 針對 [收件者],請輸入電子郵件地址。

    2. 針對 [主旨],請輸入從服務匯流排主題的訂用帳戶收到的訊息

    3. 切換至運算式

    4. 輸入下列運算式:

      base64ToString(items('For_each')?['ContentData'])
      
    5. 選取 [確定]。

      Screenshot that shows the expression for Body of the Send an email activity.

在 foreach 迴圈中新增另一個動作以完成訊息

  1. For Each 迴圈中,選取 [新增動作]

    1. 在 [最近] 清單中選取 [服務匯流排]

    2. 從動作清單中,選取 [完成主題訂用帳戶中的訊息]

      Screenshot that shows the selection of Complete a message in a topic subscription.

    3. 選取您的服務匯流排主題

    4. 選取主題的訂用帳戶

    5. 在 [訊息的鎖定權杖] 中,從 [動態內容] 選取 [鎖定權杖]

      Screenshot that shows the lock token field.

  2. 在 Logic Apps 設計工具的工具列上選取 [儲存],以儲存邏輯應用程式。

    Screenshot that shows the Save button in the Logic app designed.

測試應用程式

  1. 如果您尚未將測試訊息傳送至主題,請依照對服務匯流排主題傳送訊息一節中的指示,將訊息傳送至主題。

  2. 切換至邏輯應用程式的 [概觀] 頁面,然後切換至底部窗格中的 [執行歷程記錄] 索引標籤。 您會看到邏輯應用程式執行傳送至主題的訊息。 可能需要幾分鐘的時間,您才會看到邏輯應用程式執行。 選取工具列上的 [重新整理],以重新整理頁面。

    Screenshot that shows the Logic app run history.

  3. 選取邏輯應用程式執行以查看詳細資料。 您可以看到它在 For 迴圈中處理了 5 則訊息。

    Screenshot that shows the details for the selected logic app run.

  4. 您應該會收到邏輯應用程式所接收的每則訊息的電子郵件。

    Screenshot of Outlook with the messages received from the topics' subscription.

疑難排解

如果您在等候並重新整理後並未看到任何叫用,請執行下列步驟:

  1. 確認訊息已抵達服務匯流排主題。 查看 [服務匯流排主題] 頁面上的 [傳入訊息] 計數器。 在此案例中,我執行了 MessageSender 應用程式 1次,因此我看到 5 則訊息。

    Screenshot that shows the Service Bus Topic page with incoming message count selected.

  2. 確認服務匯流排訂用帳戶中沒有任何作用中訊息。 如果您在此頁面上未看到任何事件,請確認 [服務匯流排訂用帳戶] 頁面未顯示任何 [作用中訊息計數]。 如果此計數器的數字大於零,表示訂用帳戶的訊息因故無法轉送至處理常式函式 (事件訂用帳戶處理常式)。 請確認您已正確設定事件訂用帳戶。

    Screenshot that shows the Service Bus Subscription page with the active message count selected.

  3. 您也會在服務匯流排命名空間的 [事件] 頁面上看到 [已傳遞的事件]

    Screenshot that shows the Events page of the Service Bus Namespace page.

  4. 您也可以在 [事件訂用帳戶] 頁面上看到事件已傳遞。 您可以在 [事件] 頁面上選取事件訂用帳戶,以進入此頁面。

    Screenshot that shows the Event Subscription page with the delivered event count selected.

下一步