共用方式為


教學課程:使用 Azure Functions 來回應透過 Azure 事件方格所收到的 Azure 服務匯流排事件

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

在本教學課程中,您會了解如何:

  • 建立服務匯流排命名空間
  • 準備用來傳送訊息的應用程式範例
  • 對服務匯流排主題傳送訊息
  • 使用 Logic Apps 接收訊息
  • 在 Azure 上設定測試函式
  • 透過 Event Grid 連線函式和命名空間
  • 使用 Azure Functions 接收訊息

必要條件

如果您沒有 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;) 傳送至服務匯流排主題。

    主控台應用程式輸出

其他必要條件

安裝 Visual Studio 2022 並納入 Azure 開發工作負載。 此工作負載包含要在 Visual Studio 中建立、建置及部署 Azure Functions 專案所必須擁有的 Azure Function Tools

部署函數應用程式

注意

若要深入了解如何建立和部署 Azure Functions 應用程式,請參閱使用 Visual Studio 開發 Azure Functions

  1. SBEventGridIntegration.slnFunctionApp1 專案中,開啟 ReceiveMessagesOnEvent.cs 檔案。

  2. <SERVICE BUS NAMESPACE - CONNECTION STRING> 取代為服務匯流排命名空間的連接字串。 其應該與您在同一個解決方案中 MessageSender 專案的 Program.cs 檔案所使用的連接字串相同。

  3. 以滑鼠右鍵按一下 [FunctionApp1],然後選取 [發佈]

  4. 在 [發佈] 頁面上選取 [開始]。 這些步驟可能與您所看到的不同,但發佈程式應該類似。

  5. 在 [發佈] 精靈的 [目標] 頁面上,選取 [Azure] 作為 [目標]

  6. 在 [特定目標] 頁面上,選取 [Azure 函式應用程式 (Windows)]

  7. 在 [ 函式實例 ] 頁面上,選取 [ 新建]。

    顯示 Visual Studio - 發佈對話框 [新增函式] 按鈕的螢幕快照。

  8. 在 [函式應用程式 (Windows)] 頁面上,遵循下列步驟:

    1. 輸入函式應用程式的名稱
    2. 選取 Azure 訂用帳戶
    3. 選取現有的資源群組或建立新的資源群組。 在本教學課程中,請選取具有服務匯流排命名空間的資源群組。
    4. 選取 App Service 的方案類型
    5. 選取位置。 選取與服務匯流排命名空間相同的位置。
    6. 選取現有的 [Azure 儲存體] 或選取 [新增],以建立新的儲存體帳戶供函式應用程式使用。
    7. 針對 Application Insights,選取現有的 Application Insights 實例以與 Azure 函式建立關聯,或建立一個實例。
    8. 選取 [建立] 以建立函式應用程式。
  9. 回到 [發佈] 精靈的 [函式執行個體] 頁面上,選取 [完成]

  10. 在 Visual Studio 的 [發佈] 頁面上,選取 [發佈] 以將函式應用程式發佈到 Azure。

  11. 在 [輸出] 視窗中,查看來自建置和發佈的訊息,並確認兩者皆已成功。

    如果發佈因驗證問題而失敗,請確定 Azure Functions 應用程式已啟用 SCM 基本身份驗證發佈 選項。

    顯示已啟用 SCM 基本身份驗證發佈選項的螢幕快照。

  12. 現在,在 [發佈] 頁面上的 [裝載] 區段中,選取 [...(省略號),然後選取 [在 Azure 入口網站 中開啟]。

    顯示 Visual Studio 中 [發佈] 頁面的螢幕快照。

  13. 在 [Azure 入口網站] 的 [函式應用程式] 頁面上,從列表中選取 EventGridTriggerFunction。 建議您使用事件方格觸發程序來搭配 Azure Functions,因為這會比使用 HTTP 觸發程序多幾個好處。 如需詳細資訊,請參閱以 Azure 函式作為事件方格事件的事件處理常式

    顯示 [函式] 頁面與 [事件方格觸發程式] 函式的螢幕快照。

  14. 在 EventGridTriggerFunction 的 [式] 頁面上,切換至 [調用] 索引標籤。

    顯示事件方格觸發程式函式調用頁面的螢幕快照。

    讓此頁面在網頁瀏覽器的索引標籤中保持開啟。 您稍後要重新整理此頁面,以查看此函式的叫用。

透過 Event Grid 連線到函式和服務匯流排命名空間

在這一節中,請使用 Azure 入口網站將函式與服務匯流排命名空間繫結在一起。

若要建立 Azure 事件方格訂用帳戶,請遵循下列步驟:

  1. 在 Azure 入口網站中移至您的服務匯流排命名空間,然後在左窗格中選取 [事件]。 您的命名空間視窗隨即開啟,其右窗格中顯示兩個 Event Grid 訂用帳戶。

    顯示 服務匯流排 命名空間 [事件] 頁面的螢幕快照。

  2. 選取工具列上的 [+ 事件訂用帳戶]

  3. 在 [建立事件訂用帳戶] 頁面上,執行下列步驟:

    1. 輸入訂用帳戶的名稱

    2. 輸入系統主題名稱。 系統主題是針對 Azure 資源所建立的主題,例如 Azure 儲存體帳戶和 Azure 服務匯流排。 若要深入了解系統主題,請參閱系統主題概觀

    3. 針對 [端點類型] 選取 [Azure 函式],然後選擇 [設定端點]。

      此螢幕快照顯示 服務匯流排 命名空間的 [建立事件訂閱] 頁面。

    4. 在 [選取 Azure 函式] 頁面上,選取訂用帳戶、資源群組、函式應用程式、位置和函式,然後選取 [確認選取項目]

      顯示 Azure 函式端點選取項目的螢幕快照。

    5. 在 [建立事件訂用帳戶] 頁面上,切換至 [篩選] 索引標籤,並執行下列工作:

      1. 選取 [啟用主旨篩選]

      2. 輸入您稍早建立之 服務匯流排 主題的訂用帳戶名稱。 在下列螢幕快照中,訂用帳戶的名稱是 mysub

      3. 選取建立按鈕。

        顯示事件訂用帳戶 [篩選] 頁面的螢幕快照。

  4. 切換至 [事件] 頁面的 [事件訂閱] 索引標籤,並確認您有在清單中看到所需的事件訂閱。

    顯示 服務匯流排 命名空間事件訂閱的螢幕快照。

監視函式應用程式

您先前傳送至服務匯流排主題的訊息會轉送到訂用帳戶 (S1)。 事件方格會將訂用帳戶上的訊息轉送至 Azure 函式。 在教學課程的這個步驟中,您會確認函式已完成叫用,並檢視已記錄的參考訊息。

  1. 在 Azure 函式應用程式的頁面上,如果尚未作用中,請切換至 [ 調用 ] 索引標籤。 對於張貼至服務匯流排主題的每則訊息,您應會看到一個項目。 如果您看不到,請在等候幾分鐘後重新整理頁面。

    顯示調用后函式調用頁面的螢幕快照。

  2. 從清單中選取叫用,以查看詳細資料。

    顯示函式調用詳細數據的螢幕快照。

    您也可以使用 [ 記錄] 索引標籤來查看傳送訊息時記錄資訊。 可能會有一些延遲,因此請提供幾分鐘的時間來查看記錄的訊息。

    顯示 Azure 函式 [記錄] 索引標籤的螢幕擷取畫面。

疑難排解

如果您等候一會兒並重新整理之後沒有看到任何函式叫用,請遵循下列步驟:

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

    顯示 [服務匯流排 主題] 頁面 - 內送訊息的螢幕快照。

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

    顯示 服務匯流排 訂用帳戶作用中訊息計數的螢幕快照。

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

    顯示已傳遞事件計數的螢幕快照。

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

    顯示 [事件訂用帳戶] 頁面 - 傳遞事件的螢幕快照。