教學課程:使用 Azure Functions 來回應透過 Azure 事件方格所收到的 Azure 服務匯流排事件
在本教學課程中,您將了解如何使用 Azure Functions 和 Azure Logic Apps 來回應透過 Azure 事件方格所收到的 Azure 服務匯流排事件。
在本教學課程中,您會了解如何:
- 建立服務匯流排命名空間
- 準備用來傳送訊息的應用程式範例
- 對服務匯流排主題傳送訊息
- 使用 Logic Apps 接收訊息
- 在 Azure 上設定測試函式
- 透過 Event Grid 連線函式和命名空間
- 使用 Azure Functions 接收訊息
必要條件
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
建立服務匯流排命名空間
請遵循下列教學課程中的指示:快速入門:使用 Azure 入口網站建立服務匯流排主題和主題的訂用帳戶,以執行下列工作:
- 建立進階服務匯流排命名空間。
- 取得連接字串。
- 建立服務匯流排主題。
- 針對主題建立訂用帳戶。 在本教學課程中,您只需要一個訂用帳戶,因此不需要建立訂用帳戶 S2 和 S3。
對服務匯流排主題傳送訊息
在此步驟中,您會使用範例應用程式,將訊息傳送至您在上一個步驟中建立的服務匯流排主題。
複製 GitHub azure-service-bus 存放庫,或下載 ZIP 檔案並從中擷取檔案。
在 Visual Studio 中,移至 \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 資料夾,然後開啟 SBEventGridIntegration.sln 檔案。
在方案總管視窗中,展開 MessageSender 專案,然後選取 [Program.cs]。
將
<SERVICE BUS NAMESPACE - CONNECTION STRING>
取代為服務匯流排命名空間的連接字串;同時將<TOPIC NAME>
取代為主題名稱。const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>"; const string TopicName = "<TOPIC NAME>";
建置並執行程式,以將 5 個測試訊息 (
const int numberOfMessages = 5;
) 傳送至服務匯流排主題。
其他必要條件
安裝 Visual Studio 2022 並納入 Azure 開發工作負載。 此工作負載包含要在 Visual Studio 中建立、建置及部署 Azure Functions 專案所必須擁有的 Azure Function Tools。
部署函數應用程式
注意
若要深入了解如何建立和部署 Azure Functions 應用程式,請參閱使用 Visual Studio 開發 Azure Functions
從 SBEventGridIntegration.sln 的 FunctionApp1 專案中,開啟 ReceiveMessagesOnEvent.cs 檔案。
將
<SERVICE BUS NAMESPACE - CONNECTION STRING>
取代為服務匯流排命名空間的連接字串。 其應該與您在同一個解決方案中 MessageSender 專案的 Program.cs 檔案所使用的連接字串相同。以滑鼠右鍵按一下 [FunctionApp1],然後選取 [發佈]。
在 [發佈] 頁面上選取 [開始]。 這些步驟可能與您所看到的不同,但發佈程式應該類似。
在 [發佈] 精靈的 [目標] 頁面上,選取 [Azure] 作為 [目標]。
在 [特定目標] 頁面上,選取 [Azure 函式應用程式 (Windows)]。
在 [ 函式實例 ] 頁面上,選取 [ 新建]。
在 [函式應用程式 (Windows)] 頁面上,遵循下列步驟:
- 輸入函式應用程式的名稱。
- 選取 Azure 訂用帳戶。
- 選取現有的資源群組或建立新的資源群組。 在本教學課程中,請選取具有服務匯流排命名空間的資源群組。
- 選取 App Service 的方案類型。
- 選取位置。 選取與服務匯流排命名空間相同的位置。
- 選取現有的 [Azure 儲存體] 或選取 [新增],以建立新的儲存體帳戶供函式應用程式使用。
- 針對 Application Insights,選取現有的 Application Insights 實例以與 Azure 函式建立關聯,或建立一個實例。
- 選取 [建立] 以建立函式應用程式。
回到 [發佈] 精靈的 [函式執行個體] 頁面上,選取 [完成]。
在 Visual Studio 的 [發佈] 頁面上,選取 [發佈] 以將函式應用程式發佈到 Azure。
在 [輸出] 視窗中,查看來自建置和發佈的訊息,並確認兩者皆已成功。
如果發佈因驗證問題而失敗,請確定 Azure Functions 應用程式已啟用 SCM 基本身份驗證發佈 選項。
現在,在 [發佈] 頁面上的 [裝載] 區段中,選取 [...(省略號),然後選取 [在 Azure 入口網站 中開啟]。
在 [Azure 入口網站] 的 [函式應用程式] 頁面上,從列表中選取 EventGridTriggerFunction。 建議您使用事件方格觸發程序來搭配 Azure Functions,因為這會比使用 HTTP 觸發程序多幾個好處。 如需詳細資訊,請參閱以 Azure 函式作為事件方格事件的事件處理常式。
在 EventGridTriggerFunction 的 [函式] 頁面上,切換至 [調用] 索引標籤。
讓此頁面在網頁瀏覽器的索引標籤中保持開啟。 您稍後要重新整理此頁面,以查看此函式的叫用。
透過 Event Grid 連線到函式和服務匯流排命名空間
在這一節中,請使用 Azure 入口網站將函式與服務匯流排命名空間繫結在一起。
若要建立 Azure 事件方格訂用帳戶,請遵循下列步驟:
在 Azure 入口網站中移至您的服務匯流排命名空間,然後在左窗格中選取 [事件]。 您的命名空間視窗隨即開啟,其右窗格中顯示兩個 Event Grid 訂用帳戶。
選取工具列上的 [+ 事件訂用帳戶]。
在 [建立事件訂用帳戶] 頁面上,執行下列步驟:
輸入訂用帳戶的名稱。
輸入系統主題的名稱。 系統主題是針對 Azure 資源所建立的主題,例如 Azure 儲存體帳戶和 Azure 服務匯流排。 若要深入了解系統主題,請參閱系統主題概觀。
針對 [端點類型] 選取 [Azure 函式],然後選擇 [設定端點]。
在 [選取 Azure 函式] 頁面上,選取訂用帳戶、資源群組、函式應用程式、位置和函式,然後選取 [確認選取項目]。
在 [建立事件訂用帳戶] 頁面上,切換至 [篩選] 索引標籤,並執行下列工作:
切換至 [事件] 頁面的 [事件訂閱] 索引標籤,並確認您有在清單中看到所需的事件訂閱。
監視函式應用程式
您先前傳送至服務匯流排主題的訊息會轉送到訂用帳戶 (S1)。 事件方格會將訂用帳戶上的訊息轉送至 Azure 函式。 在教學課程的這個步驟中,您會確認函式已完成叫用,並檢視已記錄的參考訊息。
在 Azure 函式應用程式的頁面上,如果尚未作用中,請切換至 [ 調用 ] 索引標籤。 對於張貼至服務匯流排主題的每則訊息,您應會看到一個項目。 如果您看不到,請在等候幾分鐘後重新整理頁面。
從清單中選取叫用,以查看詳細資料。
您也可以使用 [ 記錄] 索引標籤來查看傳送訊息時記錄資訊。 可能會有一些延遲,因此請提供幾分鐘的時間來查看記錄的訊息。
疑難排解
如果您等候一會兒並重新整理之後沒有看到任何函式叫用,請遵循下列步驟:
確認訊息已抵達服務匯流排主題。 查看 [服務匯流排主題] 頁面上的 [傳入訊息] 計數器。 在此案例中,我執行了 MessageSender 應用程式兩次,因此我看到 10 則訊息 (每次執行各 5 則訊息)。
確認服務匯流排訂用帳戶中沒有任何作用中訊息。 如果您在此頁面上未看到任何事件,請確認 [服務匯流排訂用帳戶] 頁面未顯示任何 [作用中訊息計數]。 如果此計數器的數字大於零,表示訂用帳戶的訊息因故無法轉送至處理常式函式 (事件訂用帳戶處理常式)。 請確認您已正確設定事件訂用帳戶。
您也會在服務匯流排命名空間的 [事件] 頁面上看到 [已傳遞的事件]。
您也可以在 [事件訂用帳戶] 頁面上看到事件已傳遞。 您可以在 [事件] 頁面上選取事件訂用帳戶,以進入此頁面。
相關內容
- 深入了解 Azure Event Grid。
- 深入了解 Azure Functions。
- 深入了解 Azure 服務匯流排。