Azure持久功能和数据保留

时间:2019-10-21 19:13:10

标签: azure-functions azure-durable-functions

我可以看到azure持久功能使用存储帐户来管理状态和工具。在具有大量数据表和队列的环境中运行持久功能时,将变得越来越大,并且适当地变慢。持久功能是否可以自我记录日志,还是您需要自己完成这项任务?

2 个答案:

答案 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