为了防止达到容量单位(CU)的内存限制,我们建议定期清除业务流程历史记录数据。 Durable Task Scheduler 提供轻量级可配置的自动清理功能,帮助你管理协调数据清理,而无需手动干预。
| 设置 | 默认值 |
|---|---|
| 自动清除 | 已启用 |
| 默认保留期 | 30 天 |
| 最大保留期 | 90 天 |
| 适用于 | 调度器中的所有任务中心 |
| 符合条件的状态 |
Completed、Failed、Canceled、Terminated |
自动清理在后台异步运行,经过优化以最大程度地减少系统资源使用,并防止与其他持久任务产生干扰。 尽管自动清理不遵循严格的计划,但其清理速率通常与编排调度速率保持一致。
工作原理
自动清理功能默认启用,默认策略为30天,但可以自定义。 可以通过定义保留策略来修改它,这些保留策略指定保留特定状态的业务流程数据的时间。 自动清理功能删除处于最终状态的编排数据。 终端状态表示业务流程已达到最终状态,不再计划任务、处理事件或生成工作项。 终端状态包括:
CompletedFailedCanceledTerminated
符合自动清除条件的业务流程实例与 Durable SDK PurgeInstancesAsync API 所面向的业务流程实例匹配。
自动清理将忽略与非最终状态关联的协调数据。 非终结状态表示编排实例正在进行中、暂停或处于未来可能恢复的状态(等待外部事件或计时器)。 非终端状态包括:
PendingRunningSuspendedContinued_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" } ]
由于没有为 canceled 或 terminated 业务流程设置任何特定策略,因此默认策略仍适用于它们,在 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