0

例如,我创建了一个非常简单的 WebJob TimerTrigger

        static async Task Main()
        {
            var builder = new HostBuilder();
            builder.ConfigureWebJobs(b =>
            {
                b.AddAzureStorageCoreServices();                
                b.AddTimers();
            });

            builder.ConfigureLogging((context, b) =>
            {
                b.AddConsole();
            });

            var host = builder.Build();
            using (host)
            {
                await host.RunAsync();
            }
        }
    }

    public class Functions
    {
        public static void ProcessTimerMessage([TimerTrigger("*/30 * * * * *", RunOnStartup = true)] TimerInfo timerInfo, ILogger logger)
        {
            logger.LogInformation("I am here");
        }
    }

当我在 Azure 中运行它时,它永远不会完成。我期待这在每次运行时完成,然后在下一次触发时重新开始。相反,它永远不会停止运行:

Azure 仪表板的输出

4

1 回答 1

1

WebJobs 的 TimerTrigger 在启动时作为单例实例运行,并将连续运行,在内部跟踪它运行的时间间隔(基于提供 cron 模式)。如果任何单个调用花费的时间比间隔时间长,那么它将继续处理它正在执行的工作并跳过重叠调用,直到当前工作完成。

您可以在此处阅读详细信息: https ://github.com/Azure/azure-webjobs-sdk-extensions/wiki/TimerTrigger

于 2021-01-08T16:37:41.010 回答