我可以看到azure持久功能使用存储帐户来管理状态和工具。在具有大量数据表和队列的环境中运行持久功能时,将变得越来越大,并且适当地变慢。持久功能是否可以自我记录日志,还是您需要自己完成这项任务?
答案 0 :(得分:1)
研究此问题后,似乎应该由开发人员来实现自己的处理程序。我通读了github问题,并发布了可接受的答案,似乎函数团队仅实现了API所需的but no automated code.
Here's the example from the official docs-只是添加了一个计时器功能,该功能可以删除30天之前的所有历史记录。
[FunctionName("PurgeInstanceHistory")]
public static Task Run(
[DurableClient] IDurableOrchestrationClient client,
[TimerTrigger("0 0 12 * * *")]TimerInfo myTimer)
{
return client.PurgeInstanceHistoryAsync(
DateTime.MinValue,
DateTime.UtcNow.AddDays(-30),
new List<OrchestrationStatus> { OrchestrationStatus.Completed });
}
他们在文档中还注意到清除大量记录的速度可能很慢。他们不是在开玩笑。您可以先使用HTTP API call进行清除,然后再进行自动化。
DELETE /runtime/webhooks/durabletask/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
答案 1 :(得分:0)
在业务流程完成,失败或终止后的几天(例如30天)内,业务流程历史记录将被删除。删除该数据后,将无法再查询已清除实例的状态。天数将在任务中心级别进行配置,并且清除将在运行时自动完成。
有关更多详细信息,请参阅此github issue。