host.json 中的 Durable Functions 设置

在 host.json 文件中配置Durable Functions设置,以控制Azure Functions应用的任务中心行为、存储提供程序和性能选项。 有关host.json中常规设置的信息,请参阅Azure Functions 1.x 的 host.json 参考或Azure Functions 2.x 及更高版本的 host.json 参考。

Durable Functions的配置设置。

注意

Azure Functions运行时的所有版本都支持Durable Functions的所有主要版本。 但是,host.json配置的架构因Azure Functions运行时的版本和所使用的Durable Functions扩展版本略有不同。

以下代码提供了 durableTask中的两个设置示例:一个用于 Durable Functions 2.x,一个用于 Durable Functions 1.x。 可以将这两个示例与 Azure Functions 2.0 和 3.0 配合使用。 使用 Azure Functions 1.0 时,可用的设置不变,但 durableTask 部分位于 host.json 配置的根目录,而不是位于 下的字段。

{
 "extensions": {
  "durableTask": {
    "hubName": "MyTaskHub",
    "defaultVersion": "1.0",
    "versionMatchStrategy": "CurrentOrOlder",
    "versionFailureStrategy": "Reject",
    "storageProvider": {
      "connectionStringName": "AzureWebJobsStorage",
      "controlQueueBatchSize": 32,
      "controlQueueBufferThreshold": 256,
      "controlQueueVisibilityTimeout": "00:05:00",
      "FetchLargeMessagesAutomatically": true,
      "maxQueuePollingInterval": "00:00:30",
      "partitionCount": 4,
      "trackingStoreConnectionStringName": "TrackingStorage",
      "trackingStoreNamePrefix": "DurableTask",
      "useLegacyPartitionManagement": false,
      "useTablePartitionManagement": true,
      "workItemQueueVisibilityTimeout": "00:05:00",
      "QueueClientMessageEncoding": "UTF8"
    },
    "tracing": {
      "traceInputsAndOutputs": false,
      "traceReplayEvents": false
    },
    "httpSettings":{
      "defaultAsyncRequestSleepTimeMilliseconds": 30000,
      "useForwardedHost": false
    },
    "notifications": {
      "eventGrid": {
        "topicEndpoint": "https://topic_name.chinanorth2-1.eventgrid.chinacloudapi.cn/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,
    "rollbackEntityOperationsOnExceptions": true,
    "maxOrchestrationActions": 100000,
    "storeInputsInOrchestrationHistory": false
  }
 }
}
财产 默认值 说明
集线器名称 TestHubName (v1.x 中的 DurableFunctionsHub) 存储函数应用的当前状态的中心的名称。 任务中心名称必须以字母开头且只能包含字母和数字。 如果未指定名称,则使用默认值。 备用任务中心名称可用于将多个 Durable Functions 应用程序彼此隔离,即使它们使用相同的存储后端也是如此。 有关详细信息,请参阅任务中心。
defaultVersion 要分配给新协调实例的默认版本。 指定版本时,新的编排实例将永久与该版本值相关联。 编排版本控制功能使用此设置,以实现通常会引入中断性变更的零停机时间部署等场景。 可以将任何字符串值用于版本。
版本匹配策略 当前版本或更旧版本 一个值,该值指定在加载编排器函数时如何匹配编排版本。 有效值为:None、Strict 和 CurrentOrOlder。 有关详细说明,请参阅 编排版本控制。
versionFailureStrategy 拒绝 指定编排版本与当前 defaultVersion 值不匹配时会发生什么情况的值。 有效值为 Reject 和 Fail。 有关详细说明,请参阅 编排版本控制。
controlQueueBatchSize 32 要从控制队列中一次性拉取的消息数。
控制队列缓冲阈值 Python消耗计划:32
其他语言的消耗计划:128
专用或高级计划:256
可以在内存中同时缓冲的控制队列消息数量。 达到指定数字后,调度程序会等待,然后再处理其他消息。 在某些情况下,减少此值可以显著减少内存消耗。
partitionCount 4 控制队列的分区计数。 此值必须是介于 1 和 16 之间的正整数。 更改此值需要配置新的任务中心。
控制队列可见性超时设置 00:05:00 以 hh:mm:ss 格式的出队控制队列消息的可见性超时。
工作项队列可见性超时 00:05:00 出队工作项队列消息的可见性超时,采用 hh:mm:ss 格式。
自动获取大型消息 (FetchLargeMessagesAutomatically) 是 一个值,用于指定是否在编排状态查询中检索大消息。 如果设置是 true,将检索超出队列大小限制的大型消息。 当此设置为 false时,将检索每个大型消息所对应的 Blob URL。
最大并发活动函数 消耗计划:10
专用或高级计划:当前计算机上的处理器数 10 倍
可以在单个主机实例上并发处理的活动函数的最大数目。
最大并发编排器功能数 消耗计划:5
专用或高级计划:当前计算机上的处理器数 10 倍
可以在单个主机实例上并发处理的业务流程协调程序函数的最大数目。
maxConcurrentEntityFunctions 消耗计划:5
专用或高级计划:当前计算机上的处理器数 10 倍
可在单个主机实例上并发处理的实体函数的最大数目。 仅当使用 持久任务计划程序时,此设置才适用。 否则,并发实体执行数量上限设定为 maxConcurrentOrchestratorFunctions 值。
maxQueuePollingInterval 00:00:30 hh:mm:ss 格式的最大控制和工作项队列轮询间隔。 值越高,可能导致的消息处理延迟也越高。 值越低,可能导致的存储成本会越高,因为存储事务数增高。
maxOrchestrationActions 100,000 协调器函数在单个执行周期内可执行的最大操作数。
connectionName (v2.7.0 及更高版本)
connectionStringName (v2.x)
azureStorageConnectionStringName (v1.x)
AzureWebJobsStorage 应用设置或设置集合的名称,指定如何连接到基础Azure 存储资源。 提供单个应用设置时,它应该是一个 Azure 存储连接字符串。
trackingStoreConnectionName (v2.7.0 及更高版本)
trackingStoreConnectionStringName
应用设置或设置集合的名称,该集合指定如何连接到历史记录和实例表,这些表存储有关业务流程实例的执行历史记录和元数据。 提供单个应用设置时,它应该是一个 Azure 存储连接字符串。 如果未指定设置,将使用 connectionStringName 值 (v2.x) 或 azureStorageConnectionStringName 值 (v1.x) 连接。
trackingStoreNamePrefix 指定 trackingStoreConnectionStringName 时用于“历史记录”和“实例”表的前缀。 如果未指定前缀,则使用默认值 DurableTask 。 如果 trackingStoreConnectionStringName 未指定,则 History 和 Instances 表使用该值 hubName 作为其前缀,trackingStoreNamePrefix 的设置将被忽略。
跟踪输入和输出 假 一个值,该值指示是否跟踪函数调用的输入和输出。 跟踪函数执行事件时,默认行为是包含函数调用的序列化输入和输出中的字节数。 此行为提供有关输入和输出的最小信息,以便不会膨胀日志或无意中公开敏感信息。 当此属性为 true此属性时,将记录函数输入和输出的全部内容。
traceReplayEvents 假 一个指示是否将编排重播事件写入 Application Insights 的值。
日志重放事件 假 一个值,该值指示是否在应用程序日志中记录重播的执行。
事件网格主题端点 Azure 事件网格自定义主题终结点的 URL。 设置此属性时,业务流程生命周期通知事件将发布到此终结点。 此属性支持应用程序设置的解决。
eventGridKeySettingName (事件网格密钥设置名称) 应用设置的名称,其中包含用于在 URL 中使用事件网格自定义主题进行身份验证的 EventGridTopicEndpoint 密钥。
eventGridPublishRetryCount 0 发布到事件网格主题失败时要重试的次数。
事件网格发布重试间隔 (eventGridPublishRetryInterval) 00:05:00 事件网格发布重试间隔采用 hh:mm:ss 格式。
事件网格发布事件类型 要发布到事件网格的事件类型列表。 如果未指定任何类型,则发布所有事件类型。 允许的值包括Started、Completed和FailedTerminated。
extendedSessionsEnabled 假 一个值,指定是否缓存会话编排器和实体函数会话。
扩展会话空闲超时(以秒为单位) 30 空闲编排器或实体函数在卸载之前保留在内存中的秒数。 此设置仅在 extendedSessionsEnabled 设置为 true 时才使用。
useAppLease 是 一个值,该值指示应用在处理任务中心消息之前是否必须获取应用级 Blob 租约。 有关详细信息,请参阅 Durable Functions 中的灾难恢复和异地分发。 此设置从 v2.3.0 开始可用。
使用传统分区管理 假 一个值,指定要使用的分区管理算法的类型。 如果设置为 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 或更高版本,或者 Worker.Extensions.DurableTask v1.2.x 或更高版本。
useGracefulShutdown 假 (预览版)一个值,指示是否正常关闭,以减少由于主机关闭而导致进程内函数执行失败的可能性。
实体操作最大批处理大小 消耗计划:50
专用或高级计划:5,000
以批处理形式处理的最大实体操作数。 如果此值为 1,则会禁用批处理,并且每个操作消息将由单独的函数调用处理。 此设置从 v2.6.1 开始可用。
rollbackEntityOperationsOnExceptions 是 对于 .NET 的进程中实体操作,指定未处理的异常是否会回滚状态变化和发出信号。 当 false时,失败的操作可以保留部分效果。 外部副作用,比如输入输出,不会被回滚。 详情请参见 回滚操作。
storeInputsInOrchestrationHistory 假 一个值,指定如何存储输入。 如果设置是 true,Durable Task Framework 会在 History 表中保存活动输入,并且活动函数输入显示在业务流程历史记录查询结果中。
最大Grpc消息大小(字节) 4,194,304 一个整数值,该值设置泛型远程过程调用(gRPC)客户端可以接收的消息的最大大小(以字节为单位)。 实现 DurableTaskClient 使用 gRPC 客户端来管理编排实例。 此设置适用于 Durable Functions .NET 隔离工作器和 Java 应用。
grpcHttpClientTimeout 00:01:40 Durable Functions 中 gRPC 客户端使用的 HTTP 客户端的超时,以 hh:mm:ss 格式表示。 该客户端目前支持.NET独立工作应用(.NET 8及更高版本)以及Java应用。
队列客户端消息编码 UTF8 Azure 队列存储消息的编码策略。 有效策略是 Unicode 转换格式 -8 位 (UTF8) 和 Base64。 当您使用 Microsoft.Azure.WebJobs.Extensions.DurableTask 3.4.0 或更高版本,或 Microsoft.Azure.Functions.Worker.Extensions.DurableTask 1.7.0 或更高版本时,此设置适用。
默认异步请求休眠时间(毫秒) 30000 异步 HTTP API 的默认轮询间隔(以毫秒为单位)。 当客户端使用 HTTP 状态查询终结点轮询长时间运行的业务流程的状态时,此值确定客户端在再次轮询之前应等待多长时间。
useForwardedHost 假 设置为 true 时,该扩展使用 X-Forwarded-Host 和 X-Forwarded-Proto 标头在 HTTP 响应中构造 URL。

许多此类设置用于优化性能。 有关详细信息,请参阅 性能和规模。

后续步骤