你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
为了防止达到 容量单位(CU)的内存限制,最佳做法是定期清除业务流程历史记录数据。 Durable Task Scheduler 提供一种轻量且可配置的自动清理功能,帮助您管理编排数据清理,无需手动干预。
自动清理在后台异步运行,经过优化以最大程度地减少系统资源使用,并防止与其他持久任务产生干扰。 尽管自动清理功能不严格遵循固定时间表,但其清理速度通常与您的编排调度速度保持一致。
工作原理
自动清除是一项选择加入功能。 可以通过定义保留策略来启用此功能,这些策略用于控制处于特定状态的业务流程数据的保留时间。 自动清除功能会清除与终端状态关联的业务流程数据。 “终端”是指已达到最终状态且没有进一步计划、事件处理或工作项生成的业务流程。 终端状态包括:
Completed
Failed
Canceled
Terminated
符合自动清除条件的业务流程实例与 Durable SDK PurgeInstancesAsync API 所面向的业务流程实例匹配。
自动清理将忽略与非最终状态关联的协调数据。 “非终端”状态表示业务流程实例正在主动执行、暂停或处于将来可能恢复的状态(等待外部事件或计时器)。 这些业务流程继续作为新业务流程,其中当前执行已完成,但新实例已作为延续启动。
这些状态包括:
Pending
Running
Suspended
Continued_As_New
启用后, 自动清理功能会定期删除早于您设置的保留期限的编排数据。 仅自动清除
注释
定义的保留策略将应用于计划程序 中的所有 任务中心。
策略值
保留值的范围可以是 0(尽快清除)到最大整数值,单位为 天。
保留期是指业务流程进入终端状态后的时间段。 例如,设置保留期值 1 天。 如果业务流程需要 10 天才能完成,那么自动清理将在结束的下一天才会将其删除。 在业务流程完成之前,不会触发自动清除。
尽管保留期没有最大限制,但建议避免长时间保留大量过时业务流程数据。 这种做法可确保有效使用存储资源并保持最佳的应用性能。
策略类型
配置自动清除保留策略时,可以设置 特定 策略或 默认 策略。
无论 如何,默认策略
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)
- 二头肌
请确保具有最新版本的 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_NAMER/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"
}
小窍门
通过 CLI 参考详细了解保留策略命令。
禁用自动清除
使用以下命令删除保留策略。 持久任务计划程序在 5 到 10 分钟内停止清理业务流程数据。
az durabletask retention-policy delete --scheduler-name SCHEDULER_NAME --resource-group RESOURCE_GROUP
后续步骤
使用 Durable Task Scheduler 仪表板监视和管理业务流程状态和历史记录。