使用 Azure 入口網站建立 Durable Functions

NuGet 套件 Microsoft.Azure.WebJobs.Extensions.DurableTask 中提供 Azure Functions 的 Durable Functions 擴充。 此延伸模組必須安裝在您的函式應用程式中。 本文說明如何安裝此套件,以便您可以在 Azure 入口網站中開發長期函式。

注意

建立函式應用程式

您必須擁有函式應用程式以便主控任何函式的執行。 函式應用程式可讓您將多個函式群組為邏輯單位,方便管理、部署、調整和共用資源。 您可以建立 .NET 或 JavaScript 應用程式。

  1. 從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]

  2. 在 [新增] 頁面中,選取 [計算]>[函數應用程式]

  3. 在 [基本] 頁面中,使用下表中指定的函式應用程式設定。

    設定 建議的值 描述
    訂用帳戶 您的訂用帳戶 用於建立新函數應用程式的訂用帳戶。
    資源群組 myResourceGroup 要在其中建立函數應用程式的新資源群組名稱。 您應該建立新的資源群組,因為在現有的資源群組中建立新的函數應用程式時,存在已知的限制
    函數應用程式名稱 全域唯一的名稱 用以識別新函式應用程式的名稱。 有效的字元是 a-z (不區分大小寫)、0-9-
    您要部署程式碼或容器映像嗎? 代碼 發佈程式碼檔案或 Docker 容器的選項。
    執行階段堆疊 慣用語言 選擇支援您慣用函式程式設計語言的執行階段。 入口網站內編輯僅適用於 JavaScript、PowerShell、Python、TypeScript 和 C# 指令碼。 C# 類別庫和 Java 函式必須在本機開發
    版本 版本號碼 選擇已安裝的執行階段版本。
    區域 慣用區域 選取的區域應靠近您或靠近函式能夠存取的其他服務。
    作業系統 Windows 系統會根據執行階段堆疊選項預先選取作業系統,但您可以視需要變更設定。 入口網站內編輯僅在 Windows 上提供支援。 只有在 Linux 上才支援容器發佈。
    裝載選項和方案 使用量 (無伺服器) 定義如何將資源配置給函式應用程式的主控方案。 在預設 [使用量] 方案中,會根據函式的要求來動態新增資源。 在此無伺服器裝載中,您只需要針對函式有執行的時間來付費。 進階方案也提供動態調整。 在 App Service 方案中執行時,您必須管理函式應用程式的調整
  4. 接受在 [儲存體] 索引標籤上建立新儲存體帳戶的預設選項,並在 [監視] 索引標籤上新建 Application Insight 執行個體。您也可以選擇使用現有的儲存體帳戶或 Application Insights 執行個體。

  5. 選取 [檢閱 + 建立] 以檢閱所選的應用程式設定,然後選取 [建立] 來佈建和部署函數應用程式。

  6. 選取入口網站右上角的 [通知] 圖示,查看是否有 [部署成功] 訊息。

  7. 選取 [前往資源],以檢視您新的函式應用程式。 您也可以選取 [釘選到儀表板]。 釘選可讓您更輕鬆地從儀表板返回此函式應用程式資源。

    Screenshot of deployment notification.

根據預設,所建立的函式應用程式會使用 2.x 版的 Azure Functions 執行階段。 Durable Functions 擴充功能適用於以 C# 撰寫的 Azure Functions 執行階段的 1.x 和 2.x 版本,以及以 JavaScript 撰寫的 2.x 版本。 但是,無論選擇的語言為何,範本僅在以執行階段 2.x 版本為目標時才可以使用。

安裝 Durable Functions npm 套件 (僅限 JavaScript)

如果您要建立 JavaScript Durable Functions,您必須安裝 durable-functionsnpm 套件

  1. 從函式應用程式的頁面,選取左窗格中 [開發工具] 之下的 [進階工具]

    Functions platform features choose Kudu

  2. 在 [進階工具] 頁面中,選取 [執行]

  3. 在 Kudu 主控台中,選取 [偵錯主控台],然後選取 [CMD]

    Kudu debug console

  4. 函式應用程式的檔案目錄結構應該會顯示。 瀏覽至 site/wwwroot 資料夾。 從這裡,您可以將 package.json 檔案拖放到檔案目錄視窗來上傳該檔案。 範例 package.json 如下:

    {
      "dependencies": {
        "durable-functions": "^1.3.1"
      }
    }
    

    Kudu upload package.json

  5. package.json 上傳之後,請從 Kudu 遠端執行主控台執行 npm install 命令。

    Kudu run npm install

建立協調器函式

  1. 在您的函式應用程式中,從左側窗格選取 [函式],然後從頂端功能表選取 [新增]

  2. 在 [新函式] 的搜尋欄位中,輸入 durable,然後選擇 [Durable Functions HTTP 入門] 範本。

    Select Durable Functions HTTP starter

  3. 針對 [新函式] 名稱,輸入 HttpStart,然後選取 [建立函式]

    建立的函式用來啟動協調流程。

  4. 在函式應用程式中建立另一個函式,這次是使用 Durable Functions 協調器範本。 將新的協調流程函式命名為 HelloSequence

  5. 使用 Durable Functions 活動範本建立名為 Hello 的第三個函式。

測試長期函式的協調流程

  1. 回到 HttpStart 函式,選擇 [取得函式 URL],然後選取 [複製到剪貼簿] 圖示以複製該 URL。 您可以使用此 URL 來啟動 HelloSequence 函式。

  2. 使用 Postman 或 cURL 等 HTTP 工具,將 POST 要求傳送至您複製的 URL。 下列範例是 cURL 命令,它向長期函式傳送 POST 要求:

    curl -X POST https://{your-function-app-name}.azurewebsites.net/api/orchestrators/{functionName} --header "Content-Length: 0"
    

    在此範例中,{your-function-app-name} 是函數應用程式名稱的網域,而 {functionName}HelloSequence 協調器函數。 回應訊息會包含一組可用於監視和管理執行的 URI 端點,如下列範例所示︰

    {  
       "id":"10585834a930427195479de25e0b952d",
       "statusQueryGetUri":"https://...",
       "sendEventPostUri":"https://...",
       "terminatePostUri":"https://...",
       "rewindPostUri":"https://..."
    }
    
  3. 呼叫 statusQueryGetUri 端點 URI,您將看到長期函式目前的狀態,看起來可能如下範例:

        {
            "runtimeStatus": "Running",
            "input": null,
            "output": null,
            "createdTime": "2017-12-01T05:37:33Z",
            "lastUpdatedTime": "2017-12-01T05:37:36Z"
        }
    
  4. 繼續呼叫 statusQueryGetUri 端點,直到狀態變成 [已完成],您會看到如下列範例所示的回應:

    {
            "runtimeStatus": "Completed",
            "input": null,
            "output": [
                "Hello Tokyo!",
                "Hello Seattle!",
                "Hello London!"
            ],
            "createdTime": "2017-12-01T05:38:22Z",
            "lastUpdatedTime": "2017-12-01T05:38:28Z"
        }
    

您的第一個長期函式現在已在 Azure 中運作。

下一步