【问题标题】:can I store webjob timer schedule in a child object of appsetting.json?我可以将 webjob 计时器计划存储在 appsetting.json 的子对象中吗?
【发布时间】:2022-12-12 14:54:44
【问题描述】:

如果 cron 字符串存储在 appsetting.json 文件的根目录中,则读取它们没有问题。 但是,如果我在 appsetting.json 中这样做:

"EETHistoryJobSettings": {
    "SomeSetting": {
      "Name": "A"
    },
    "Schedule": "*/15 * * * * *"
  }

并希望计时器从 EETHistoryJobSettings json 对象中读取,它不起作用(基本上找不到 EETHistoryJobSetting.Schedule)。

public async Task Run([TimerTrigger("%EETHistoryJobSetting.Schedule%", RunOnStartup = true)] TimerInfo timerInfo, ILogger logger,
    

只是想知道是否有办法在子对象中指定 Cron 时间或必须在根对象上?

【问题讨论】:

    标签: azure-webjobs


    【解决方案1】:

    AFAIK,Azure Functions Timer Trigger MS Doc 给出了 CRON Expression Variable 应该包装在%符号。

    情况1:

    如果你的appsettings.json包含local.settings.json形式的代码设置:

    {
        "IsEncrypted": false,
        "Values": {
        "AzureWebJobsStorage": "<Storage_Conn_String>",
        "CronExpression":"*/15 * * * * *"
        }
    }
    

    然后功能代码将是:

    public async Task Run([TimerTrigger("%CronExpression%", RunOnStartup = true)] TimerInfo timerInfo, ILogger logger
    

    案例二:

    应用设置.json:

    {
    "ScheudleInfo":{
        "TimerTrigger1":{
            "CronExpression":"*/15 * * * * *"
            }
        }
    }
    

    然后功能代码将是:

    public async Task Run([TimerTrigger("%ScheudleInfo:TimerTrigger1:CronExpression%", RunOnStartup = true)] TimerInfo timerInfo, ILogger logger
    

    笔记:使用 Azure 函数类时,应在存储帐户连接字符串、环境变量中定义local.settings.json

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 2022-09-24
      • 1970-01-01
      • 2018-01-26
      相关资源
      最近更新 更多