共用方式為


Durable Functions 的繫結 (Azure Functions)

Durable Functions 延伸模組推出了三個觸發程序繫結,可控制協調器、實體與活動函式的執行。 它也引進了輸出繫結,可作為長期函式執行階段的用戶端。

請務必選擇文章頂端的 Durable Functions 開發語言。

這很重要

本文同時支援適用於 Durable Functions 的 Python v1 和 Python v2 程序設計模型。

Python v2 程序設計模型

新的 Python v2 程式設計模型支援 Durable Functions。 若要使用 v2 模型,您必須安裝 Durable Functions SDK,這是 PyPI 套件 azure-functions-durable、版本 1.2.2 或更新版本。 您也必須檢查 host.json,以確定您的應用程式參考延伸模組套件組合 4.x 版,以搭配 Durable Functions 使用 v2 模型。

您可以在 Durable Functions SDK for Python 存放庫中提供意見反應和建議。

協調流程觸發程序

協調流程觸發程式可讓您撰寫 永久性協調器函式。 當排程新的協調流程執行個體,以及現有協調流程執行個體接收到事件時,就會執行此觸發程序。 可以觸發協調器函式的事件範例包括長期定時器到期、活動函式回應,以及外部用戶端所引發的事件。

當您在 .NET 中撰寫函式時,協調流程觸發程式是使用 OrchestrationTriggerAttribute .NET 屬性來設定。

針對 Java,@DurableOrchestrationTrigger 註釋是用來設定協調流程觸發程序。

當您撰寫協調器函式時,協調流程觸發程式是由 function.json 檔案陣列中的bindings下列 JSON 物件所定義:

{
    "name": "<Name of input parameter in function signature>",
    "orchestration": "<Optional - name of the orchestration>",
    "type": "orchestrationTrigger",
    "direction": "in"
}
  • orchestration 是用戶端想要啟動這個協調器函式的新實例時,必須使用的協調流程名稱。 這個屬性為選擇性。 如果未指定,則會使用函式的名稱。

Azure Functions 支援兩種適用於 Python 的程式設計模型。 您定義協調流程觸發程式的方式取決於您所選擇的程式設計模型。

Python v2 程式設計模型可讓您直接在 Python 函式程式代碼中使用 orchestration_trigger 裝飾項目來定義協調流程觸發程式。

在 v2 模型中,Durable Functions 觸發程序和繫結可以從 DFApp 的執行個體存取,這是額外匯出 Durable Functions 特定裝飾項目的 FunctionApp 子類別。

在內部,觸發程序繫結會輪詢新協調流程事件的已設定長期存放區,例如協調流程啟動事件、長期計時器到期事件、活動函式回應事件,以及由其他函式引發的外部事件。

觸發行為

以下是協調流程觸發程序的一些附註:

  • 單一線程處理 - 單一發送器線程會用於單一主機實例上的所有協調器函式執行。 基於這個理由,請務必確保協調器函式程序代碼有效率且不會執行任何 I/O。 也務必要確保此執行緒不會執行除了等候長期函式特定工作類型以外的任何非同步工作。
  • 毒性訊息處理 - 編排觸發器中沒有毒性訊息支援。
  • 訊息可見度 - 協調觸發訊息會從佇列中移出,並在可設定的持續時間內保持不可見。 只要函式應用程式正在執行且狀況良好,這些訊息的可見性就會自動更新。
  • 傳回值 - 傳回值 會串行化為 JSON,並保存到 Azure 數據表記憶體中的協調流程歷程記錄數據表。 協調流程用戶端系結可查詢這些傳回值,稍後說明。

警告

協調器函式絕對不應該使用協調流程觸發程式系結以外的任何輸入或輸出系結。 這樣做可能會造成 Durable Task 擴充套件的問題,因為這些繫結可能不會遵守單執行緒和 I/O 規則。 如果您想使用其他繫結,請將繫結新增至從協調器函式呼叫的活動函式。 如需協調器函式編碼條件約束的詳細資訊,請參閱 Orchestrator 函式程式碼條件約束 檔。

警告

協調器函式永遠不應該聲明為async形式。

觸發程序使用方式

協調流程觸發程序繫結支援輸入及輸出。 以下是有關輸入和輸出處理的一些事項:

  • inputs - 協調流程觸發程式可以使用輸入來叫用,這些輸入是透過內容輸入物件存取的。 所有輸入都必須是 JSON 可串行化。
  • 輸出 - 協調流程觸發程序支援輸出值以及輸入。 函式的傳回值是用來指派輸出值,而且必須是 JSON 可串行化。

觸發程序範例

下列範例程式代碼顯示最簡單的 「Hello World」 協調器函式看起來會是什麼樣子。 請注意,此範例協調器實際上不會排程任何工作。

用來定義觸發程式的特定屬性取決於您是在 進程內隔離背景工作進程中執行 C# 函式。

[FunctionName("HelloWorld")]
public static string Run([OrchestrationTrigger] IDurableOrchestrationContext context)
{
    string name = context.GetInput<string>();
    return $"Hello {name}!";
}

備註

先前的程式代碼適用於 Durable Functions 2.x。 針對 Durable Functions 1.x,您必須使用 DurableOrchestrationContext 而非 IDurableOrchestrationContext。 如需版本間差異的詳細資訊,請參閱 Durable Functions 版本 一文。

const df = require("durable-functions");

module.exports = df.orchestrator(function*(context) {
    const name = context.df.getInput();
    return `Hello ${name}!`;
});

備註

durable-functions 庫負責在產生器函式結束時呼叫同步 context.done 方法。

import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@myApp.orchestration_trigger(context_name="context")
def my_orchestrator(context):
    result = yield context.call_activity("Hello", "Tokyo")
    return result
param($Context)

$InputData = $Context.Input
$InputData
@FunctionName("HelloWorldOrchestration")
public String helloWorldOrchestration(
        @DurableOrchestrationTrigger(name = "ctx") TaskOrchestrationContext ctx) {
    return String.format("Hello %s!", ctx.getInput(String.class));
}

大部分協調器函式都會呼叫活動函式,因此以下是示範如何呼叫活動函式的 「Hello World」 範例:

[FunctionName("HelloWorld")]
public static async Task<string> Run(
    [OrchestrationTrigger] IDurableOrchestrationContext context)
{
    string name = context.GetInput<string>();
    string result = await context.CallActivityAsync<string>("SayHello", name);
    return result;
}

備註

先前的程式代碼適用於 Durable Functions 2.x。 針對 Durable Functions 1.x,您必須使用 DurableOrchestrationContext 而非 IDurableOrchestrationContext。 如需版本間差異的詳細資訊,請參閱 Durable Functions 版本 一文。

const df = require("durable-functions");

module.exports = df.orchestrator(function*(context) {
    const name = context.df.getInput();
    const result = yield context.df.callActivity("SayHello", name);
    return result;
});
@FunctionName("HelloWorld")
public String helloWorldOrchestration(
        @DurableOrchestrationTrigger(name = "ctx") TaskOrchestrationContext ctx) {
    String input = ctx.getInput(String.class);
    String result = ctx.callActivity("SayHello", input, String.class).await();
    return result;
}

活動觸發程序

活動觸發程式可讓您撰寫協調器函式所呼叫的函式,稱為 活動函式

活動觸發程式是使用 ActivityTriggerAttribute .NET 屬性來設定。

活動觸發器是使用 @DurableActivityTrigger 註釋來設定。

活動觸發程式是由 function.json陣列中的bindings下列 JSON 物件所定義:

{
    "name": "<Name of input parameter in function signature>",
    "activity": "<Optional - name of the activity>",
    "type": "activityTrigger",
    "direction": "in"
}
  • activity 是活動的名稱。 這個值是協調器函式用來叫用此活動函式的名稱。 這個屬性為選擇性。 如果未指定,則會使用函式的名稱。

您定義活動觸發程式的方式取決於您所選擇的程式設計模型。

在 Python 函式程式代碼中直接使用 activity_trigger 裝飾器。

在內部,觸發程序繫結會輪詢已設定的長期存放區以取得新的活動執行事件。

觸發行為

以下是活動觸發程序的一些附註:

  • 多線程 - 與編排觸發不同,活動觸發在多線程或 I/O 上沒有任何限制。 它們可以視為一般函式。
  • 有害訊息處理 - 活動觸發程式中沒有有害訊息支援。
  • 訊息可見度 - 活動觸發訊息會從佇列中移除,並在可設定的持續時間內暫時保持不可見。 只要函式應用程式正在執行且狀況良好,這些訊息的可見性就會自動更新。
  • 傳回值 - 傳回值 會串行化為 JSON,並保存至設定的耐久存放區。

觸發程序使用方式

活動觸發器繫結同時支援輸入和輸出,就像編排觸發器一樣。 以下是有關輸入和輸出處理的一些事項:

  • inputs - 活動觸發程式可以使用協調器函式的輸入來叫用。 所有輸入都必須是 JSON 可串行化。
  • outputs - 活動函式支持輸出值和輸入。 函式的傳回值是用來指派輸出值,而且必須是 JSON 可串行化。
  • metadata - .NET 活動函式可以系結至 string instanceId 參數,以取得呼叫協調流程的實例標識符。

觸發程序範例

下列範例程式代碼顯示簡單 SayHello 活動函式的外觀。

[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] IDurableActivityContext helloContext)
{
    string name = helloContext.GetInput<string>();
    return $"Hello {name}!";
}

.NET ActivityTriggerAttribute 系結的預設參數類型是 IDurableActivityContext (或 Durable Functions v1 的 DurableActivityContext )。 不過,.NET 活動觸發程式也支援直接系結至 JSON 串行化類型(包括基本類型),因此可以簡化相同的函式,如下所示:

[FunctionName("SayHello")]
public static string SayHello([ActivityTrigger] string name)
{
    return $"Hello {name}!";
}
module.exports = async function(context) {
    return `Hello ${context.bindings.name}!`;
};

JavaScript 系結也可以以其他參數的形式傳入,因此可以簡化相同的函式,如下所示:

module.exports = async function(context, name) {
    return `Hello ${name}!`;
};
import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@myApp.activity_trigger(input_name="myInput")
def my_activity(myInput: str):
    return "Hello " + myInput
param($name)

"Hello $name!"
@FunctionName("SayHello")
public String sayHello(@DurableActivityTrigger(name = "name") String name) {
    return String.format("Hello %s!", name);
}

使用輸入和輸出系結

除了活動觸發繫結之外,您還可以使用一般的輸入和輸出繫結。

例如,您可以接受活動系結的輸入,並使用事件中樞輸出系結將訊息傳送至事件中樞:

{
  "bindings": [
    {
      "name": "message",
      "type": "activityTrigger",
      "direction": "in"
    },
    {
      "type": "eventHub",
      "name": "outputEventHubMessage",
      "connection": "EventhubConnectionSetting",
      "eventHubName": "eh_messages",
      "direction": "out"
  }
  ]
}
module.exports = async function (context) {
    context.bindings.outputEventHubMessage = context.bindings.message;
};

協調流程用戶端

協調流程用戶端系結可讓您撰寫與協調器函式互動的函式。 這些函式通常稱為 用戶端函式。 例如,您可以下列方式處理協調流程執行個體:

  • 啟動它們。
  • 查詢其狀態。
  • 終止它們。
  • 在它們執行時傳送事件給它們。
  • 清除實例歷程記錄。

您可以使用 DurableClientAttribute 屬性系結至協調流程用戶端(Durable Functions v1.x 中的 OrchestrationClientAttribute )。

您可以使用 @DurableClientInput 註釋來繫結至協調流程用戶端。

持久用戶端觸發器是由下列 JSON 物件在bindingsfunction.json數組中定義:

{
    "name": "<Name of input parameter in function signature>",
    "taskHub": "<Optional - name of the task hub>",
    "connectionName": "<Optional - name of the connection string app setting>",
    "type": "orchestrationClient",
    "direction": "in"
}
  • taskHub - 用於多個函式應用程式共用相同儲存體帳戶但需要彼此隔離的案例。 如果未指定,則會使用 來自 host.json 的預設值。 此值必須符合目標協調器函式所使用的值。
  • connectionName - 包含記憶體帳戶連接字串的應用程式設定名稱。 此連接字串所代表的記憶體帳戶必須與目標協調器函式所使用的記憶體帳戶相同。 如果未指定,則會使用函式應用程式的預設記憶體帳戶連接字串。

備註

在大部分情況下,我們建議您省略這些屬性,並依賴預設行為。

您定義持久用戶端觸發程式的方式取決於您所選擇的程式設計模型。

直接在 Python 函式程式碼中使用 durable_client_input 裝飾器。

用戶端使用方式

您通常會系結至 IDurableClient (Durable Functions v1.x 中的 DurableOrchestrationClient ),這可讓您完整存取 Durable Functions 支援的所有協調流程用戶端 API。

您通常會系結至 類別 DurableClientContext

您必須使用特定語言的 SDK 來存取客戶端物件。

以下是範例佇列觸發函式,它會啟動 "HelloWorld" 協調流程。

[FunctionName("QueueStart")]
public static Task Run(
    [QueueTrigger("durable-function-trigger")] string input,
    [DurableClient] IDurableOrchestrationClient starter)
{
    // Orchestration input comes from the queue message content.
    return starter.StartNewAsync<string>("HelloWorld", input);
}

備註

先前的 C# 程式代碼適用於 Durable Functions 2.x。 針對 Durable Functions 1.x,您必須使用 OrchestrationClient 屬性而非 DurableClient 屬性,而且必須使用 DurableOrchestrationClient 參數類型,而不是 IDurableOrchestrationClient。 如需版本間差異的詳細資訊,請參閱 Durable Functions 版本 一文。

function.json

{
  "bindings": [
    {
      "name": "input",
      "type": "queueTrigger",
      "queueName": "durable-function-trigger",
      "direction": "in"
    },
    {
      "name": "starter",
      "type": "durableClient",
      "direction": "in"
    }
  ]
}

index.js

const df = require("durable-functions");

module.exports = async function (context) {
    const client = df.getClient(context);
    return instanceId = await client.startNew("HelloWorld", undefined, context.bindings.input);
};

run.ps1

param([string] $input, $TriggerMetadata)

$InstanceId = Start-DurableOrchestration -FunctionName $FunctionName -Input $input
import azure.functions as func
import azure.durable_functions as df

myApp = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@myApp.route(route="orchestrators/{functionName}")
@myApp.durable_client_input(client_name="client")
async def durable_trigger(req: func.HttpRequest, client):
    function_name = req.route_params.get('functionName')
    instance_id = await client.start_new(function_name)
    response = client.create_check_status_response(req, instance_id)
    return response

function.json

{
  "bindings": [
    {
      "name": "input",
      "type": "queueTrigger",
      "queueName": "durable-function-trigger",
      "direction": "in"
    },
    {
      "name": "starter",
      "type": "durableClient",
      "direction": "in"
    }
  ]
}

run.ps1

param([string]$InputData, $TriggerMetadata)

$InstanceId = Start-DurableOrchestration -FunctionName 'HelloWorld' -Input $InputData
@FunctionName("QueueStart")
public void queueStart(
        @QueueTrigger(name = "input", queueName = "durable-function-trigger", connection = "Storage") String input,
        @DurableClientInput(name = "durableContext") DurableClientContext durableContext) {
    // Orchestration input comes from the queue message content.
    durableContext.getClient().scheduleNewOrchestrationInstance("HelloWorld", input);
}

如需有關啟動實例的詳細資訊,請參閱 實例管理

實體觸發程序

實體觸發程式可讓您撰寫 實體函式。 此觸發器支援處理特定實體實例的事件。

備註

從 Durable Functions 2.x 開始,即可使用實體觸發器。

在內部,此觸發程序繫結會輪詢已設定的長期存放區,以取得需要執行的新實體作業。

實體觸發程式是使用 EntityTriggerAttribute .NET 屬性來設定。

實體觸發器是由 function.json中數位列內的bindings下列 JSON 物件所定義:

{
    "name": "<Name of input parameter in function signature>",
    "entityName": "<Optional - name of the entity>",
    "type": "entityTrigger",
    "direction": "in"
}

根據預設,實體的名稱是函式的名稱。

備註

Java 尚不支持實體觸發程式。

您定義實體觸發程式的方式取決於您所選擇的程式設計模型。

在 Python 函式代碼中直接使用entity_trigger裝飾器。

觸發行為

以下是實體觸發程序的一些注意事項:

  • 單個線程:單一發送器線程是用來處理特定實體的作業。 如果多個訊息同時傳送至單一實體,作業將會一次處理一次。
  • 有害訊息處理 - 實體觸發程序中並未支援有害訊息。
  • 訊息可見性 - 實體觸發訊息被從佇列中取出並保持不可見,持續時間可設定。 只要函式應用程式正在執行且狀況良好,這些訊息的可見性就會自動更新。
  • 傳回值 - 實體函式不支援傳回值。 有特定的 API 可用來儲存狀態或將值傳回協調流程。

在實體執行期間對實體所做的任何狀態變更,都會在執行完成之後自動保存。

如需定義和與實體觸發程式互動的詳細資訊和範例,請參閱 Durable Entities 檔。

實體用戶端

實體客戶端系結可讓您以異步方式觸發 實體函式。 這些函式有時稱為 用戶端函式

您可以使用 .NET 類別庫函式中的 DurableClientAttribute .NET 屬性系結至實體用戶端。

備註

[DurableClientAttribute] 也可以用來繫結至協調流程用戶端

實體用戶端是由 function.json陣列中的bindings下列 JSON 物件所定義:

{
    "name": "<Name of input parameter in function signature>",
    "taskHub": "<Optional - name of the task hub>",
    "connectionName": "<Optional - name of the connection string app setting>",
    "type": "durableClient",
    "direction": "in"
}
  • taskHub - 用於多個函式應用程式共用相同儲存體帳戶但需要彼此隔離的案例。 如果未指定,則會使用 來自 host.json 的預設值。 此值必須符合目標實體函式所使用的值。
  • connectionName - 包含記憶體帳戶連接字串的應用程式設定名稱。 此連接字串所代表的記憶體帳戶必須與目標實體函式所使用的記憶體帳戶相同。 如果未指定,則會使用函式應用程式的預設記憶體帳戶連接字串。

備註

在大部分情況下,我們建議您省略選擇性屬性,並依賴預設行為。

您定義實體用戶端的方式取決於您所選擇的程式設計模型。

在您的 Python 函式程式碼中直接使用 durable_client_input 裝飾器。

備註

Java 尚不支持實體用戶端。

如需以用戶端身分與實體互動的詳細資訊和範例,請參閱 Durable Entities 檔。

host.json 設定

Durable Functions 的組態設定。

備註

Azure Functions 執行階段的所有版本,都支援 Durable Functions 的所有主要版本。 不過,host.json 組態的架構會根據您使用的 Azure Functions 運行時間版本和 Durable Functions 擴充功能版本而略有不同。 下列範例與 Azure Functions 2.0 和 3.0 搭配使用。 在這兩個範例中,如果您使用 Azure Functions 1.0,可用的設定會相同,但 host.json 的 “durableTask” 區段應該位於 host.json 組態的根目錄中,而不是做為 「延伸模組」底下的字段。

{
 "extensions": {
  "durableTask": {
    "hubName": "MyTaskHub",
    "storageProvider": {
      "connectionStringName": "AzureWebJobsStorage",
      "controlQueueBatchSize": 32,
      "controlQueueBufferThreshold": 256,
      "controlQueueVisibilityTimeout": "00:05:00",
      "maxQueuePollingInterval": "00:00:30",
      "partitionCount": 4,
      "trackingStoreConnectionStringName": "TrackingStorage",
      "trackingStoreNamePrefix": "DurableTask",
      "useLegacyPartitionManagement": false,
      "useTablePartitionManagement": true,
      "workItemQueueVisibilityTimeout": "00:05:00",
    },
    "tracing": {
      "traceInputsAndOutputs": false,
      "traceReplayEvents": false,
    },
    "notifications": {
      "eventGrid": {
        "topicEndpoint": "https://topic_name.westus2-1.eventgrid.azure.net/api/events",
        "keySettingName": "EventGridKey",
        "publishRetryCount": 3,
        "publishRetryInterval": "00:00:30",
        "publishEventTypes": [
          "Started",
          "Completed",
          "Failed",
          "Terminated"
        ]
      }
    },
    "maxConcurrentActivityFunctions": 10,
    "maxConcurrentOrchestratorFunctions": 10,
    "maxConcurrentEntityFunctions": 10,
    "extendedSessionsEnabled": false,
    "extendedSessionIdleTimeoutInSeconds": 30,
    "useAppLease": true,
    "useGracefulShutdown": false,
    "maxEntityOperationBatchSize": 50,
    "maxOrchestrationActions": 100000,
    "storeInputsInOrchestrationHistory": false
  }
 }
}

任務中樞名稱必須以字母開頭,且只包含字母和數位。 如果未指定,函式應用程式的預設工作中樞名稱為 TestHubName。 如需詳細資訊,請參閱 工作中樞

財產 預設 說明
hubName TestHubName(DurableFunctionsHub 如果使用 Durable Functions 1.x) 替代的 工作樞紐 名稱可用來隔離多個 Durable Functions 應用程式彼此之間,即使它們使用相同的儲存後端也一樣。
controlQueueBatchSize 32 一次從控制佇列提取的訊息數目。
controlQueueBufferThreshold Python 的使用方案:32
其他語言的使用計劃:128
專用/進階方案:256
可以在記憶體中一次緩衝處理的控制佇列訊息數目,到達這個數目之後發送器會在針對任何其他訊息清除佇列之前等待。 在某些情況下,減少此值可能會大幅降低記憶體耗用量。
partitionCount 4 控制佇列的資料分割計數。 可能是介於 1 到 16 之間的正整數。 變更此值需要設定新的工作中樞。
controlQueueVisibilityTimeout 5 分鐘 已從控制佇列中清除之訊息的可見度逾時。
workItemQueueVisibilityTimeout 5 分鐘 已清除佇列之工作項目佇列訊息的可見度逾時。
maxConcurrentActivityFunctions 使用量方案:10
專用/進階方案:目前計算機上的處理器數目為10倍
可以在單一主機實例上同時處理的活動函式數目上限。
maxConcurrentOrchestratorFunctions 消耗計劃:5
專用/進階方案:目前計算機上的處理器數目為10倍
單一主機實例上可同時處理的協調器函式數目上限。
maxConcurrentEntityFunctions 消費方案:5
專用/進階方案:目前計算機上的處理器數目為10倍
可以在單一主機實例上同時處理的實體函式數目上限。 此設定僅適用於使用 永久性工作排程器時。 否則,並行實體執行的最大數目限制為 maxConcurrentOrchestratorFunctions
maxQueuePollingInterval 30 秒 最大控制和工作項目佇列輪詢間隔的格式為「hh:mm:ss」。 較高的值可能會導致訊息處理延遲較高。 較低的值可能會導致記憶體成本較高,因為記憶體交易增加。
connectionName (2.7.0 和更新版本)
connectionStringName (2.x)
azureStorageConnectionStringName (1.x)
AzureWebJobsStorage 應用程式設定或設定集合的名稱,指定如何連線到基礎 Azure 記憶體資源。 提供單一應用程式設定時,它應該是 Microsoft Azure 儲存體連接字串。
trackingStoreConnectionName (2.7.0 和更新版本)
trackingStoreConnectionStringName
應用程式設定或設定集合的名稱,指定如何連線到記錄和實例數據表。 提供單一應用程式設定時,它應該是 Azure 儲存體連接字串。 如果未指定, connectionStringName 則會使用 (Durable 2.x) 或 azureStorageConnectionStringName (Durable 1.x) 連接。
trackingStoreNamePrefix 指定 trackingStoreConnectionStringName 時,用於歷程記錄和執行個體資料表的前置詞。 如果未設定,預設前置詞值將會是 DurableTask。 如果未 trackingStoreConnectionStringName 指定,則 [記錄] 和 [實例] 數據表會使用 hubName 值作為其前置詞,而且會忽略 任何 的 trackingStoreNamePrefix 設定。
追蹤輸入和輸出 假的 此值指出是否要追蹤函式呼叫的輸入和輸出。 追蹤函式執行事件時的預設行為是包含函式呼叫中序列化輸入和輸出的位元組數目。 此行為可提供輸入和輸出的最基本資訊,而不會讓記錄變大,或者不小心公開敏感性資訊。 將此屬性設定為 true 會導致預設函式記錄記錄函式輸入和輸出的整個內容。
traceReplayEvents 假的 此值可指出是否要將協調流程重新執行事件寫入 Application Insights。
eventGridTopicEndpoint Azure 事件方格自定義主題端點的 URL。 設定此屬性時,協調流程生命週期通知事件會發佈至此端點。 這個屬性支援應用程式設定解析。
eventGridKeySettingName 應用程式設定的名稱,其中包含用來向 Azure 事件方格自定義主題 EventGridTopicEndpoint進行驗證的密鑰。
eventGridPublishRetryCount 0 如果發佈到 Azure 事件方格主題失敗時重試的次數。
eventGridPublishRetryInterval 5 分鐘 事件方格會以 hh:mm:ss 格式發佈重試間隔。
eventGridPublishEventTypes 要發佈至事件方格的事件類型清單。 如果未指定,則會發佈所有事件類型。 允許的值包括Started、、CompletedFailedTerminated
useAppLease 當設定為 true時,應用程式在處理工作中樞訊息前,需要先取得應用程式層級的 Blob 租約。 如需詳細資訊,請參閱 災害復原和地理分布 文件。 從 v2.3.0 開始提供。
useLegacyPartitionManagement 假的 當設定為 false時,會使用分割區管理演算法,以減少相應放大時重複函數執行的可能性。從 v2.3.0 開始提供。 不建議將此值設定為 true
useTablePartitionManagement v3.x 延伸模組版本中為 true
v2.x 延伸模組版本中為 false
當設定為 true時,會使用專為降低 Azure 記憶體 V2 帳戶成本而設計的數據分割管理演算法。 可從 WebJobs.Extensions.DurableTask v2.10.0 開始提供。 使用此設定搭配受控識別需要 WebJobs.Extensions.DurableTask v3.x 或更新版本,或早於 v1.2.x 或更新版本的 Worker.Extensions.DurableTask 版本。
useGracefulShutdown 假的 (預覽) 啟用正常關機以減少主機關機讓內含式函式執行失敗的機會。
maxEntityOperationBatchSize(2.6.1) 使用量方案:50
專用/進階方案:5000
批次方式處理的實體作業數目上限。 如果設定為 1,則會停用批處理,而且每個作業訊息都會由個別的函式調用處理。
storeInputsInOrchestrationHistory 假的 當設定為 true時,會告知 Durable Task Framework 將活動輸入儲存在歷程記錄數據表中。 這可讓您在查詢協調流程歷程記錄時顯示活動函式輸入。
maxGrpcMessageSizeInBytes 4194304 整數值,可設定 DurableTaskClient 之 gRPC 用戶端可以接收之訊息的大小上限,以位元組為單位。 這適用於 Durable Functions .NET Isolated 和 Java。

其中許多設定都是為了優化效能。 如需詳細資訊,請參閱 效能和規模

後續步驟