首页 > 解决方案 > 天蓝色功能上的无限监视器不会也产生无限量的回放吗?

问题描述

我正在学习天蓝色的功能和持久的功能。查看监视器模式的示例:

https://docs.microsoft.com/en-us/azure/azure-functions/durable/durable-functions-monitor

public static async Task Run(DurableOrchestrationContext monitorContext, ILogger log)
{
    MonitorRequest input = monitorContext.GetInput<MonitorRequest>();
    if (!monitorContext.IsReplaying) { log.LogInformation($"Received monitor request. Location: {input?.Location}. Phone: {input?.Phone}."); }

    VerifyRequest(input);

    DateTime endTime = monitorContext.CurrentUtcDateTime.AddHours(6);
    if (!monitorContext.IsReplaying) { log.LogInformation($"Instantiating monitor for {input.Location}. Expires: {endTime}."); }

    while (monitorContext.CurrentUtcDateTime < endTime)
    {
        // Check the weather
        if (!monitorContext.IsReplaying) { log.LogInformation($"Checking current weather conditions for {input.Location} at {monitorContext.CurrentUtcDateTime}."); }

        bool isClear = await monitorContext.CallActivityAsync<bool>("E3_GetIsClear", input.Location);

        if (isClear)
        {
            // It's not raining! Or snowing. Or misting. Tell our user to take advantage of it.
            if (!monitorContext.IsReplaying) { log.LogInformation($"Detected clear weather for {input.Location}. Notifying {input.Phone}."); }

            await monitorContext.CallActivityAsync("E3_SendGoodWeatherAlert", input.Phone);
            break;
        }
        else
        {
            // Wait for the next checkpoint
            var nextCheckpoint = monitorContext.CurrentUtcDateTime.AddMinutes(30);
            if (!monitorContext.IsReplaying) { log.LogInformation($"Next check for {input.Location} at {nextCheckpoint}."); }

            await monitorContext.CreateTimer(nextCheckpoint, CancellationToken.None);
        }
    }

    log.LogInformation("Monitor expiring.");
}
  1. 如果换成无限显示器呢?
  2. 上下文的历史不会增长到导致问题的地方吗?
  3. 我是否正确,每当一个调用等待 CreateTimer 时,当前方法会等待直到计时器满足,但在计时器触发时也会执行重播?
  4. 那么下一次,是否有初始方法 + 2 次回放运行?
  5. 如果平台将函数移动到新主机会发生什么,然后它会取消该初始方法并由于在新主机上播放重播而继续吗?

标签: azureazure-functions

解决方案


推荐阅读