每个触发器执行多次的 Azure Chron Webjob
Azure Chron Webjob Executing Multiple Times per Trigger
我已经将 chron 作业设置为每 5 分钟 运行,但在门户日志中我似乎总是每个 运行 有 10 个函数调用日志。这是我工作中最高级别的部分:
public class ShipOrderJob
{
private IShipDateMetBll _shipDateMetBll;
private Serilog.ILogger _log;
public ShipOrderJob(Serilog.ILogger log)
{
_log = log;
}
public void ProcessQueueMessage([TimerTrigger("* */5 * * * *", RunOnStartup = true)]
TimerInfo info,
Serilog.ILogger log)
{
using (ThreadScopedLifestyle.BeginScope(Program.Container))
{
_shipDateMetBll = Program.Container.GetInstance<IShipDateMetBll>();
_shipDateMetBll.ResetLogger(_log);
_shipDateMetBll.DecorateLogger(log);
_shipDateMetBll.MoveB2BOrdersIntoProcessingIfShipDateTimeMet();
}
}
}
我的日志是这样的:
我也知道有一个问题,因为我将 serilogger 连接到 slack,今天 webjob 崩溃了。我没有收到一条错误消息,而是在一秒钟内收到了 6 条相同的错误消息。
我试过的:
我检查了缩放选项卡以确保我们没有 6 个实例 运行ning。我们只有一个运行ning。我的计时计时器似乎是正确的,该功能应该只 运行 每 5 分钟一次。唯一可怕的是我使用的是 Microsoft.Azure.WebJobs
的预发布版本
问题与您当前的 CRON 设置有关。
基本上*
= 每个
所以表达式 * */5 * * * *
意味着它将每 5 分钟每秒 运行。
表达式 0 */5 * * * *
表示它将 运行 每 5 分钟一次。
我已经将 chron 作业设置为每 5 分钟 运行,但在门户日志中我似乎总是每个 运行 有 10 个函数调用日志。这是我工作中最高级别的部分:
public class ShipOrderJob
{
private IShipDateMetBll _shipDateMetBll;
private Serilog.ILogger _log;
public ShipOrderJob(Serilog.ILogger log)
{
_log = log;
}
public void ProcessQueueMessage([TimerTrigger("* */5 * * * *", RunOnStartup = true)]
TimerInfo info,
Serilog.ILogger log)
{
using (ThreadScopedLifestyle.BeginScope(Program.Container))
{
_shipDateMetBll = Program.Container.GetInstance<IShipDateMetBll>();
_shipDateMetBll.ResetLogger(_log);
_shipDateMetBll.DecorateLogger(log);
_shipDateMetBll.MoveB2BOrdersIntoProcessingIfShipDateTimeMet();
}
}
}
我的日志是这样的:
我也知道有一个问题,因为我将 serilogger 连接到 slack,今天 webjob 崩溃了。我没有收到一条错误消息,而是在一秒钟内收到了 6 条相同的错误消息。
我试过的:
我检查了缩放选项卡以确保我们没有 6 个实例 运行ning。我们只有一个运行ning。我的计时计时器似乎是正确的,该功能应该只 运行 每 5 分钟一次。唯一可怕的是我使用的是 Microsoft.Azure.WebJobs
问题与您当前的 CRON 设置有关。
基本上*
= 每个
所以表达式 * */5 * * * *
意味着它将每 5 分钟每秒 运行。
表达式 0 */5 * * * *
表示它将 运行 每 5 分钟一次。