使用 Durable Functions 在無伺服器環境中撰寫具狀態函式,這是 Azure Functions 的功能。 Durable Functions 有用的場景包括協調微服務和工作流程、有狀態模式如展開和收攏,以及長時間運行的任務。
您可以使用 Durable Task 排程器作為 Durable Functions 的後端,來儲存協作流程和實體運行時狀態。
在本快速入門中,您將:
- 設定現有的 Durable Functions 應用程式以使用長期工作排程器。
- 設定 Durable Task 模擬器以進行本地開發。
- 使用 Visual Studio Code 將應用程式部署至 App Service 方案上的 Azure。
- 在長期工作排程器儀錶板上監視應用程式和工作中樞的狀態。
備註
長期工作排程器目前僅支援在 Functions Premium 和 App Service 方案上執行的 Durable Functions。
先決條件
本快速入門假設您已在本機計算機上擁有 Azure Functions 專案,其中包含:
如果您不符合這些先決條件,建議您應該從下列的快速入門之一開始設定本機 Functions 專案:
您也會需要:
- 已安裝 Docker 以執行長期工作排程器模擬器。
- 已安裝 Azurite 。
- HTTP 測試工具,可保護您的數據安全。
新增 Durable 任务排程器套件
使用 dotnet add package 命令安裝最新版的 Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged 套件:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease
備註
長期工作排程器延伸模組需要 Microsoft.Azure.Functions.Worker.Extensions.DurableTask 版本 1.2.2
或更高版本。
在 host.json中,更新 extensionBundle
屬性以使用包含 Durable 任務排程器套件的預覽版本。
{
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.29.0, 5.0.0)"
}
}
更新 host.json
更新 host.json,按照下列說明,以便使用 Durable Task Scheduler 作為後端。
{
"extensions": {
"durableTask": {
"hubName": "%TASKHUB_NAME%",
"storageProvider": {
"type": "azureManaged",
"connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
}
}
}
}
設定 local.settings.json
新增本機開發的連線資訊:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<DEPENDENT ON YOUR PROGRAMMING LANGUAGE>",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;Authentication=None",
"TASKHUB_NAME": "default"
}
}
設定長期工作模擬器
拉取包含模擬器的 Docker 映像。
docker pull mcr.microsoft.com/dts/dts-emulator:latest
執行模擬器。
docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latest
下列輸出表示模擬器已成功啟動。
請記下 Docker Desktop 上開放的端口。 排程器會針對不同的用途公開多個埠:
-
8080
:允許應用程式連線到排程器的 gRPC 端點 -
8082
:長期工作排程器儀錶板的端點
-
在本機進行測試
移至應用程式的根目錄,然後啟動 Azurite。
azurite start
執行應用程式。
func start
您應該會在應用程式中看到功能的清單。 如果您已遵循其中一個 Durable Functions 快速入門建立應用程式,您應該會看到類似下列輸出的內容:
複製的 URL 值
statusQueryGetUri
,並將其貼到瀏覽器的網址列中。 您應在編排實例上看到狀態:{ "name": "DurableFunctionsOrchestrationCSharp1", "instanceId": "b50f8b723f2f44149ab9fd2e3790a0e8", "runtimeStatus": "Completed", "input": null, "customStatus": null, "output": [ "Hello Tokyo!", "Hello Seattle!", "Hello London!" ], "createdTime": "2025-02-21T21:09:59Z", "lastUpdatedTime": "2025-02-21T21:10:00Z" }
若要檢視協調流程實例的詳細資訊,請移至 http://localhost:8082/ 存取長期工作排程器儀錶板。
按兩下 預設 工作中樞以查看其儀錶板。
在 Azure 中執行您的應用程式
建立所需的資源
遵循函式 應用程式整合式建立流程,在 Azure 上建立長期工作排程器實例和 Azure Functions 應用程式。 此體驗會自動設定身分識別型存取,並設定應用程式存取排程器所需的環境變數。
瀏覽至 [函式應用程式建立] 面板,然後選取 [進階函式] 或 [App Service] 作為主控選項。
在 建立函數應用程式 (App Service) 頁面中,填入 基本 頁籤中的資訊。
領域 說明 訂閱 選取您的 Azure 訂用帳戶。 資源群組 選取現有的資源群組,或按兩下 [ 新建 ] 以建立新的資源群組。 函數應用程式名稱 為您的函式應用程式建立唯一的名稱。 您要部署程式碼或容器映像嗎? 保持選取 [ 程序代碼] 選項。 執行階段堆疊 選取您在本快速入門中所使用的運行時間。 版本 選取您的執行環境堆疊版本。 區域 選取 其中一個支持的區域。 作業系統 選擇您的作業系統。 選取 [Durable Functions] 索引標籤。
選擇Durable Task Scheduler作為耐久函式的後端提供者。
建立排程器資源。 此動作會自動建立工作中樞。
領域 說明 儲存體後端 選取 耐用任務調度器。 區域 我們建議排程器和函式應用程式的區域應該相同。 耐用工作排程器 使用提供的排程器名稱,或按兩下 [ 新建 ] 來建立自定義名稱。 計畫 目前僅提供 專用 。 容量單位 目前,您只能選擇一個容量單位作為選項。 按一下檢閱 + 建立以檢閱資源建立。
系統會自動建立具有必要角色型訪問控制(RBAC)許可權的使用者指派受控識別,並將其新增至函式應用程式。 您可以在摘要檢視中找到與管理的身份資源相關的資訊,例如:
指派給它的角色(持久任務數據貢獻者)
範圍限定在工作中樞層級的指派
點擊 建立 當驗證通過時。
資源部署可能需要大約 15 到 20 分鐘的時間。 完成後,您可以將應用程式部署至 Azure。
將函式應用程式部署至 Azure
這很重要
部署至現有的函數應用程式一律會覆寫該應用程式在 Azure 中的內容。
在命令選擇區中,輸入並選取 [Azure Functions:部署至函式應用程式]。
選取您剛才建立的函數應用程式。 當系統提示您覆寫先前的部署時,請選取 [部署],將函式程式碼部署至新的函數應用程式資源。
部署完成時,選取 [檢視輸出] 以檢視建立和部署結果,包括您所建立的 Azure 資源。 如果您錯過通知,請選取右下角的鈴鐺圖示,以再次查看。
Functions Premium 方案上的應用程式
如果您的應用程式正在 Functions Premium 方案上執行,請在部署後開啟 運行時間調整監視 設定,以確保應用程式根據負載自動調整:
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
測試函式應用程式
執行下列命令以取得函式的網址:
az functionapp function list --resource-group <RESOURCE_GROUP_NAME> --name <FUNCTION_APP_NAME> --query '[].{Function:name, URL:invokeUrlTemplate}' --output json
檢查編排狀態
檢查 Durable Task Scheduler 儀錶板上協調流程實例和活動詳細數據的狀態。 存取儀錶板需要您登入。
備註
下列說明顯示範圍限定於特定工作集線器的一項角色指派。 如果您需要存取排程器 中的所有 工作中樞,請在排程器層級上執行工作分派。
導航至入口網站上的耐久性任務排程器資源。
按一下工作中樞名稱。
在左側功能表中,選取 [存取控制 (IAM)]。
按兩下 [新增 ] 以新增角色指派。
搜尋並選取 Durable Task Data Contributor。 按 [下一步]。
在 [成員] 索引標籤的 [存取權指派對象] 下,選取 [使用者、群組或服務主體]。
針對成員,點擊+選取成員。
在 [ 選取成員 ] 窗格中,搜尋您的名稱或電子郵件:
挑選您的電子郵件,然後按兩下 [ 選取 ] 按鈕。
按兩下 [檢閱 + 指派 ] 以完成指派角色。
指派角色之後,點選集線資源左側功能表上的 [概覽],然後導航至位於 [基本資訊] 區段頂端的儀錶板 URL。
清理資源
如果您不再需要為完成快速入門所建立的資源,若要避免 Azure 訂用帳戶中的相關成本,請刪除資源群組和所有相關資源。
後續步驟
- 深入了解 持久性工作排程器儀錶板。
- 在使用 Durable Task Scheduler 時,請進行疑難排解,以解決可能遇到的任何錯誤。