为 Durable Task Scheduler 设置自动清除保留策略

为了防止达到容量单位(CU)的内存限制,我们建议定期清除业务流程历史记录数据。 Durable Task Scheduler 提供轻量级可配置的自动清理功能,帮助你管理协调数据清理,而无需手动干预。

设置 默认值
自动清除 已启用
默认保留期 30 天
最大保留期 90 天
适用于 调度器中的所有任务中心
符合条件的状态 CompletedFailedCanceledTerminated

自动清理在后台异步运行,经过优化以最大程度地减少系统资源使用,并防止与其他持久任务产生干扰。 尽管自动清理不遵循严格的计划,但其清理速率通常与编排调度速率保持一致。

工作原理

自动清理功能默认启用,默认策略为30天,但可以自定义。 可以通过定义保留策略来修改它,这些保留策略指定保留特定状态的业务流程数据的时间。 自动清理功能删除处于最终状态的编排数据。 终端状态表示业务流程已达到最终状态,不再计划任务、处理事件或生成工作项。 终端状态包括:

  • Completed
  • Failed
  • Canceled
  • Terminated

符合自动清除条件的业务流程实例与 Durable SDK PurgeInstancesAsync API 所面向的业务流程实例匹配。

自动清理将忽略与非最终状态关联的协调数据。 非终结状态表示编排实例正在进行中、暂停或处于未来可能恢复的状态(等待外部事件或计时器)。 非终端状态包括:

  • Pending
  • Running
  • Suspended
  • Continued_As_New

注意

使用 ContinueAsNew 的编排不被视为完成状态。 ContinueAsNew 使用新的执行历史记录重启业务流程,同时保留实例 ID,因此,在实例达到真正的终端状态之前,不会清除这些实例。

启用后, 自动清理功能会定期删除早于您设置的保留期限的编排数据。 自动清理功能仅会删除处于终端状态的编排的数据。

注意

定义的保留策略将应用于计划程序 中的所有 任务中心。

配置保留策略

策略值范围

保留值以 为单位指定,范围为 0(尽快清除)到 90 天。 默认情况下,自动清理保留期设置为 30 天

保留期从业务流程进入终止状态时开始,而不是从其创建时开始。 例如,如果将保留值设置为 1 天,而协调流程需要 10 天才能完成,则自动清除会在完成后 1 天将其删除。

默认和特定策略类型

配置自动清除保留策略时,可以设置 特定 策略或 默认 策略。

  • 无论 如何,默认策略orchestrationState都会清除业务流程数据。 以下策略在两天后清除此功能覆盖的所有状态的编排数据:

    {
      "retentionPeriodInDays": 2
    }
    
  • 特定策略定义对特定 orchestrationState 的业务流程数据清除。 以下策略告知 Durable Task Scheduler 将 已完成 的业务流程数据保留 1 天,之后将清除此数据。

    {
      "retentionPeriodInDays": 1,
      "orchestrationState": "Completed"
    }
    

添加特定策略以替代应用于业务流程的默认策略。 在以下示例中,第二个和第三个策略将替代默认策略("retentionPeriodInDays": 1)。

  • completed 业务流程关联的数据会尽快删除。

  • failed 编排关联的数据将在 60 天后删除。

    [
      {
        "retentionPeriodInDays": 1
      },
      {
        "retentionPeriodInDays": 0,
        "orchestrationState": "Completed"
      },
      {
        "retentionPeriodInDays": 60,
        "orchestrationState": "Failed"
      }
    ]
    

由于没有为 canceledterminated 业务流程设置任何特定策略,因此默认策略仍适用于它们,在 1 天后清除其数据。

有关详细信息,请参阅持久任务计划程序保留策略的 API 参考规范。

启用自动清除

可以使用以下方法定义保留策略:

  • 持久任务 CLI
  • Azure 资源管理器 (ARM)
  • Bicep

请确保具有最新版本的 Durable Task CLI 扩展。

az extension add --name durabletask
az extension update --name durabletask

运行以下命令创建或更新保留策略。

az durabletask retention-policy create --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP --default-days 1 --completed-days 0 --failed-days 60

以下属性指定不同状态的编排数据的保留期限。

财产 Description
--canceled-days-x 保留已取消业务流程的天数。
--completed-days-c 保留已完成编排的天数。
--default-days-d 保留业务流程的天数。
--failed-days-f 保留失败业务流程的天数。
--terminated-days-t 保留已终止业务流程的天数。

示例响应

如果创建成功,将收到以下响应。

{
  "id": "/subscriptions/SUBSCRIPTION_ID/resourceGroups/RESOURCE_GROUP/providers/Microsoft.DurableTask/schedulers/SCHEDULER_NAME/retentionPolicies/default",
  "name": "default",
  "properties": {
    "provisioningState": "Succeeded",
    "retentionPolicies": [
      {
        "retentionPeriodInDays": 1
      },
      {
        "orchestrationState": "Completed",
        "retentionPeriodInDays": 0
      },
      {
        "orchestrationState": "Failed",
        "retentionPeriodInDays": 60
      }
    ]
  },
  "resourceGroup": "RESOURCE_GROUP",
  "systemData": {
    "createdAt": "2025-04-23T23:41:17.3165122Z",
    "createdBy": "someone@microsoft.com",
    "createdByType": "User",
    "lastModifiedAt": "2025-04-23T23:41:17.3165122Z",
    "lastModifiedBy": "someone@microsoft.com",
    "lastModifiedByType": "User"
  },
  "type": "microsoft.durabletask/schedulers/retentionpolicies"
}

Tip

通过 CLI 参考详细了解保留策略命令。

查看当前策略

检索调度器目前的保留策略:

az durabletask retention-policy show --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP

禁用自动清除

使用以下命令删除保留策略。 持久任务计划程序在 5 到 10 分钟内停止清理业务流程数据。

az durabletask retention-policy delete --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP