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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了。net核心Web作业中如何从appsettings.json中读取Cron表达式相关的知识,希望对你有一定的参考价值。

我已经开发了.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表达式信息的正确方法。

答案

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

这可能不是最优雅的解决方案-但您可以将两个函数放入两个不同的预定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开始,运行该功能,然后关闭。

以上是关于。net核心Web作业中如何从appsettings.json中读取Cron表达式的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ASP.NET 在 web.config 文件中写入 appSetting?

如何使用 .NET Core 根据发布配置文件更新 appsettings.json?

从 .net 标准库中读取 appsettings.json

从appsettings.json向.net核心控制台应用程序添加多个终结点路由

asp .net 核心 wcf 端点

如何将 asp.net 实体框架 connectionStrings 移动到 web.config 的 appSettings 部分