教學課程:使用 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)]。
在 [函式執行個體] 頁面上,選取 [建立新的 Azure 函式]。
在 [函式應用程式 (Windows)] 頁面上,遵循下列步驟:
- 輸入函式應用程式的名稱。
- 選取 Azure 訂用帳戶。
- 選取現有的資源群組或建立新的資源群組。 在本教學課程中,請選取具有服務匯流排命名空間的資源群組。
- 選取 App Service 的方案類型。
- 選取位置。 選取與服務匯流排命名空間相同的位置。
- 選取現有的 [Azure 儲存體] 或選取 [新增],以建立新的儲存體帳戶供函式應用程式使用。
- 選取 [建立] 以建立函式應用程式。
回到 [發佈] 精靈的 [函式執行個體] 頁面上,選取 [完成]。
在 Visual Studio 的 [發佈] 頁面上,選取 [發佈] 以將函式應用程式發佈到 Azure。
在 [輸出] 視窗中,查看來自建置和發佈的訊息,並確認兩者皆已成功。
現在,在 [發佈] 頁面上的 [裝載] 區段中,選取 [...(省略號)],然後選取 [在 Azure 入口網站中管理]。
在 Azure 入口網站的 [函式應用程式] 頁面上,選取左側功能表中的 [函式],並確認您有看到兩個函式:
從清單中選取 [EventGridTriggerFunction]。 建議您使用事件方格觸發程序來搭配 Azure Functions,因為這會比使用 HTTP 觸發程序多幾個好處。 如需詳細資訊,請參閱以 Azure 函式作為事件方格事件的事件處理常式。
在 EventGridTriggerFunction 的 [函式] 頁面上,選取左側功能表上的 [監視器]。
選取 [設定] 來設定 Application Insights 以擷取叫用記錄。 您可以使用此頁面來監視從事件方格接收服務匯流排事件時的函式執行情形。
在 [Application Insights] 頁面上輸入資源的名稱、為資源選取位置,然後選取 [確定]。
選取頂端 (階層連結功能表) 的函式 EventGridTriggerFunction,以瀏覽回 [函式] 頁面。
確認您在 [監視器] 頁面上。
讓此頁面在網頁瀏覽器的索引標籤中保持開啟。 您稍後要重新整理此頁面,以查看此函式的叫用。
透過 Event Grid 連線到函式和服務匯流排命名空間
在這一節中,請使用 Azure 入口網站將函式與服務匯流排命名空間繫結在一起。
若要建立 Azure 事件方格訂用帳戶,請遵循下列步驟:
在 Azure 入口網站中移至您的服務匯流排命名空間,然後在左窗格中選取 [事件]。 您的命名空間視窗隨即開啟,其右窗格中顯示兩個 Event Grid 訂用帳戶。
選取工具列上的 [+ 事件訂用帳戶]。
在 [建立事件訂用帳戶] 頁面上,執行下列步驟:
輸入訂用帳戶的名稱。
輸入系統主題的名稱。 系統主題是針對 Azure 資源所建立的主題,例如 Azure 儲存體帳戶和 Azure 服務匯流排。 若要深入了解系統主題,請參閱系統主題概觀。
針對 [端點類型] 選取 [Azure 函式],然後選擇 [選取端點]。
在 [選取 Azure 函式] 頁面上,選取訂用帳戶、資源群組、函式應用程式、位置和函式,然後選取 [確認選取項目]。
在 [建立事件訂用帳戶] 頁面上,切換至 [篩選] 索引標籤,並執行下列工作:
選取 [啟用主旨篩選]
針對您稍早建立的服務匯流排主題,輸入其訂用帳戶的名稱 (S1)。
選取建立按鈕。
切換至 [事件] 頁面的 [事件訂閱] 索引標籤,並確認您有在清單中看到所需的事件訂閱。
監視函式應用程式
您先前傳送至服務匯流排主題的訊息會轉送到訂用帳戶 (S1)。 事件方格會將訂用帳戶上的訊息轉送至 Azure 函式。 在教學課程的這個步驟中,您會確認函式已完成叫用,並檢視已記錄的參考訊息。
在 Azure 函式應用程式的頁面上,切換至 [監視器] 索引標籤 (如果此索引標籤尚未啟用的話)。 對於張貼至服務匯流排主題的每則訊息,您應會看到一個項目。 如果您看不到,請在等候幾分鐘後重新整理頁面。
從清單中選取叫用,以查看詳細資料。
您也可以使用 [監視器] 頁面的 [記錄] 索引標籤,在訊息傳送後查看記錄資訊。 可能會有一些延遲,所以幾分鐘後再查看記錄的訊息。
疑難排解
如果您等候一會兒並重新整理之後沒有看到任何函式叫用,請遵循下列步驟:
確認訊息已抵達服務匯流排主題。 查看 [服務匯流排主題] 頁面上的 [傳入訊息] 計數器。 在此案例中,我執行了 MessageSender 應用程式兩次,因此我看到 10 則訊息 (每次執行各 5 則訊息)。
確認服務匯流排訂用帳戶中沒有任何作用中訊息。 如果您在此頁面上未看到任何事件,請確認 [服務匯流排訂用帳戶] 頁面未顯示任何 [作用中訊息計數]。 如果此計數器的數字大於零,表示訂用帳戶的訊息因故無法轉送至處理常式函式 (事件訂用帳戶處理常式)。 請確認您已正確設定事件訂用帳戶。
您也會在服務匯流排命名空間的 [事件] 頁面上看到 [已傳遞的事件]。
您也可以在 [事件訂用帳戶] 頁面上看到事件已傳遞。 您可以在 [事件] 頁面上選取事件訂用帳戶,以進入此頁面。
下一步
- 深入了解 Azure Event Grid。
- 深入了解 Azure Functions。
- 深入了解 Azure App Service 的 Logic Apps 功能。
- 深入了解 Azure 服務匯流排。