分享方式:


快速入門:設定 Durable Functions 應用程式以使用 Azure Functions Durable Task Scheduler (預覽)

使用 Durable Functions 在無伺服器環境中撰寫具狀態函式,這是 Azure Functions 的功能。 Durable Functions 有用的場景包括協調微服務和工作流程、有狀態模式如展開和收攏,以及長時間運行的任務。

您可以使用 Durable Task 排程器作為 Durable Functions 的後端,來儲存協作流程和實體運行時狀態。

在本快速入門中,您將:

  • 設定現有的 Durable Functions 應用程式以使用長期工作排程器。
  • 設定 Durable Task 模擬器以進行本地開發。
  • 使用 Visual Studio Code 將應用程式部署至 App Service 方案上的 Azure。
  • 在長期工作排程器儀錶板上監視應用程式和工作中樞的狀態。

備註

長期工作排程器目前僅支援在 Functions PremiumApp Service 方案上執行的 Durable Functions。

先決條件

本快速入門假設您已在本機計算機上擁有 Azure Functions 專案,其中包含:

  • Durable 函式已新增至您的專案,包括:
  • 專案已配置為本機偵錯。

如果您不符合這些先決條件,建議您應該從下列的快速入門之一開始設定本機 Functions 專案:

您也會需要:

新增 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"
  }
}

設定長期工作模擬器

  1. 拉取包含模擬器的 Docker 映像。

    docker pull mcr.microsoft.com/dts/dts-emulator:latest
    
  2. 執行模擬器。

    docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latest
    

    下列輸出表示模擬器已成功啟動。

    顯示模擬器已成功在終端機上啟動的螢幕快照。

  3. 請記下 Docker Desktop 上開放的端口。 排程器會針對不同的用途公開多個埠:

    • 8080:允許應用程式連線到排程器的 gRPC 端點
    • 8082:長期工作排程器儀錶板的端點

    Docker 上埠的螢幕快照。

在本機進行測試

  1. 移至應用程式的根目錄,然後啟動 Azurite。

    azurite start
    
  2. 執行應用程式。

    func start
    

    您應該會在應用程式中看到功能的清單。 如果您已遵循其中一個 Durable Functions 快速入門建立應用程式,您應該會看到類似下列輸出的內容:

    在本機執行應用程式時所列出的函式螢幕快照。

  3. 使用您選擇的 POST,將 HTTP 要求傳送至 URL 端點,以啟動協調流程實例。

  4. 複製的 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"
      }
    
  5. 若要檢視協調流程實例的詳細資訊,請移至 http://localhost:8082/ 存取長期工作排程器儀錶板。

  6. 按兩下 預設 工作中樞以查看其儀錶板。

備註

深入了解 持久性工作排程器儀錶板

長期工作排程器模擬器會將協調流程數據儲存在記憶體中,這表示所有數據在關閉時都會遺失。

測試時遇到問題嗎? 請參閱疑難解答指南。

在 Azure 中執行您的應用程式

建立所需的資源

遵循函式 應用程式整合式建立流程,在 Azure 上建立長期工作排程器實例和 Azure Functions 應用程式。 此體驗會自動設定身分識別型存取,並設定應用程式存取排程器所需的環境變數。

  1. 瀏覽至 [函式應用程式建立] 面板,然後選取 [進階函式] 或 [App Service] 作為主控選項。

    函式應用程式的裝載選項螢幕快照,並選取 [App Service]。

  2. 建立函數應用程式 (App Service) 頁面中,填入 基本 頁籤中的資訊。

    用於建立 App Service 方案函式應用程式的 [基本] 索引標籤螢幕快照。

    領域 說明
    訂閱 選取您的 Azure 訂用帳戶。
    資源群組 選取現有的資源群組,或按兩下 [ 新建 ] 以建立新的資源群組。
    函數應用程式名稱 為您的函式應用程式建立唯一的名稱。
    您要部署程式碼或容器映像嗎? 保持選取 [ 程序代碼] 選項。
    執行階段堆疊 選取您在本快速入門中所使用的運行時間。
    版本 選取您的執行環境堆疊版本。
    區域 選取 其中一個支持的區域
    作業系統 選擇您的作業系統。
  3. 選取 [Durable Functions] 索引標籤。

  4. 選擇Durable Task Scheduler作為耐久函式的後端提供者。

  5. 建立排程器資源。 此動作會自動建立工作中樞。

    建立 App Service 方案函式應用程式的螢幕快照。

    領域 說明
    儲存體後端 選取 耐用任務調度器
    區域 我們建議排程器和函式應用程式的區域應該相同。
    耐用工作排程器 使用提供的排程器名稱,或按兩下 [ 新建 ] 來建立自定義名稱。
    計畫 目前僅提供 專用
    容量單位 目前,您只能選擇一個容量單位作為選項。
  6. 按一下檢閱 + 建立以檢閱資源建立。

    系統會自動建立具有必要角色型訪問控制(RBAC)許可權的使用者指派受控識別,並將其新增至函式應用程式。 您可以在摘要檢視中找到與管理的身份資源相關的資訊,例如:

    • 指派給它的角色(持久任務數據貢獻者

    • 範圍限定在工作中樞層級的指派

      在 [檢閱 + 建立] 索引標籤上選取和檢閱的欄位和屬性螢幕快照。

  7. 點擊 建立 當驗證通過時。

資源部署可能需要大約 15 到 20 分鐘的時間。 完成後,您可以將應用程式部署至 Azure。

將函式應用程式部署至 Azure

這很重要

部署至現有的函數應用程式一律會覆寫該應用程式在 Azure 中的內容。

  1. 在命令選擇區中,輸入並選取 [Azure Functions:部署至函式應用程式]

  2. 選取您剛才建立的函數應用程式。 當系統提示您覆寫先前的部署時,請選取 [部署],將函式程式碼部署至新的函數應用程式資源。

  3. 部署完成時,選取 [檢視輸出] 以檢視建立和部署結果,包括您所建立的 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 儀錶板上協調流程實例和活動詳細數據的狀態。 存取儀錶板需要您登入。

備註

下列說明顯示範圍限定於特定工作集線器的一項角色指派。 如果您需要存取排程器 中的所有 工作中樞,請在排程器層級上執行工作分派。

  1. 導航至入口網站上的耐久性任務排程器資源。

  2. 按一下工作中樞名稱。

  3. 在左側功能表中,選取 [存取控制 (IAM)]

  4. 按兩下 [新增 ] 以新增角色指派。

    在入口網站的 [存取控制] 窗格上新增角色指派的螢幕快照。

  5. 搜尋並選取 Durable Task Data Contributor。 按 [下一步]。

    在入口網站中選取「持久性任務數據貢獻者」角色指派的螢幕快照。

  6. 在 [成員] 索引標籤的 [存取權指派對象] 下,選取 [使用者、群組或服務主體]

  7. 針對成員,點擊+選取成員

  8. 在 [ 選取成員 ] 窗格中,搜尋您的名稱或電子郵件:

    在入口網站中選取使用者指派的受控識別類型的螢幕快照。

  9. 挑選您的電子郵件,然後按兩下 [ 選取 ] 按鈕。

  10. 按兩下 [檢閱 + 指派 ] 以完成指派角色。

  11. 指派角色之後,點選集線資源左側功能表上的 [概覽],然後導航至位於 [基本資訊] 區段頂端的儀錶板 URL。

清理資源

如果您不再需要為完成快速入門所建立的資源,若要避免 Azure 訂用帳戶中的相關成本,請刪除資源群組和所有相關資源。

後續步驟