。net核心Web作业中如何从appsettings.json中读取Cron表达式

问题描述 投票:1回答:1

我已经开发了.Net Core 2.2 Azure Web Job项目,该项目具有多个计时器触发功能。每15分钟运行一项功能,每10分钟运行另一项功能。

  public async Task GetRecordsFromCosmosDBCollection_0([TimerTrigger("0 0/15 * * * *")]TimerInfo timerInfo){
   //Custom Business Logic
  }
  public async Task GetRecordsFromCosmosDBCollection_1([TimerTrigger("0 0/10 * * * *")]TimerInfo timerInfo){
   //Custom Business Logic
  }

如果我直接在函数参数中使用CRON表达式,则它将按预期工作。但是我想从appsettings.json文件中读取CRON表达式信息,然后将其传递给上述两个函数。

因此,任何人都可以建议从Azure WebJob项目的Functions.cs文件中的appsettings.json读取CRON表达式信息的正确方法。

.net-core azure-webjobs azure-webjobs-triggered
1个回答
0
投票

我认为这样做的目的是使时间表脱离已编译的代码,而无需重新编译和重新部署就可以对其进行更改。

这可能不是最优雅的解决方案-但您可以将两个函数放入两个不同的预定WebJob中。然后,您可以为每个设置一个单独的settings.job。

https://docs.microsoft.com/en-us/azure/app-service/webjobs-create#CreateScheduledCRON

[外部settings.job文件被部署到WebJob exe所在的文件夹-通常为D:\ home \ site \ wwwroot \ App_Data \ jobs \ triggered \ WebJobName-您可以在此处更改计划。

要有不同的时间表-您必须分成不同的WebJob,因为settings.job时间表从Main开始,而不是像[TimerTrigger]之类的特定功能。

在预定的作业中,Main中的代码如下:

    await host.StartAsync();
    await jobHost.CallAsync("ManualTrigger", inputs);
    await host.StopAsync();

其中“ ManualTrigger”是Functions.cs中的函数。 settings.jobs中的日程安排从Main开始,运行该功能,然后关闭。

© www.soinside.com 2019 - 2024. All rights reserved.