因此,我正在发送移动应用程序推送通知,并且我已经设置了Azure通知中心,但是我想在其中进行计划,我知道Azure内置有一个选项可以这样做,因为这会花费很多200 $我决定创建Azure函数来处理它,
我已经遍历了NCRON表达式,现在我想知道如何安排作业在特定日期运行一次,我所能找到的只是基于重复的作业,还可以像日期会有所不同
const fn = jest.mock("../../services/testService");
我试图做这样的事情,在1月2日的15:00Hrs运行某项,它似乎没有用,我在这里错过了什么吗?如何使 public static class Function1
{
[FunctionName("Function1")]
public static void Run([TimerTrigger("0 0 15 2 Jan")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
动态
任何输入将不胜感激
谢谢
答案 0 :(得分:2)
为清楚起见,我重新编辑了整个答案。希望这次我能解释清楚。
好。首先,您需要知道,azure Function有一个声明部分和一个配置部分。
在本地,声明部分为([TimerTrigger("* * * * * *")]TimerInfo myTimer, ILogger log)
,配置部分为local.settings.json
文件。
部署到Azure时。它改变。声明部分变为function.json
,而Application Settings
成为配置部分。
根据您的要求,您可以在配置部分添加一个密钥,并将其用于您的功能。
function.cs:
using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
namespace TimeTrigger
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([TimerTrigger("%Schedule%")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
}
local.settings.json:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"Schedule": "* * * * * *"
}
}
您可以通过更改json中键的值来更改触发时间的方式(例如,使用powershell修改值。或者可以使用代码进行修改。)
与本地类似,您可以在门户上执行此操作:
声明部分:
配置部分:
答案 1 :(得分:1)
您可以使用下面的链接生成详细的CRON表达式:
http://corntab.com/?c=0_15_2_1_ *
0 0 15 2 Jan *
是生成的CRON表达式,它将在1月的第2天(每年1500小时)运行。
如@Bowman所正确建议的那样,请从上面的链接检查并验证表达式,看看是否有帮助。
答案 2 :(得分:1)
首先,您现在要想到的主要问题是表达式,您可以参考文档使用正确的表达式格式:NCRONTAB expressions。
{second} {minute} {hour} {day} {month} {day-of-week}
然后关于您动态运行作业的要求。您可以将时间表表达式放入应用程序设置中,并将此属性设置为使用%符号包装的应用程序设置名称,如本示例所示:%ScheduleAppSetting%
。您可以在configuration中进行检查。
即使使用此表达式,它也会显示错误,但是仍然可以使用。
答案 3 :(得分:0)
如果只需要运行一次,为什么要使用计时器函数?
我认为更好的解决方案是使用属性 ScheduledEnqueueTimeUtc 将消息发送到队列,使其在预定时间运行。
https://docs.microsoft.com/en-us/azure/service-bus-messaging/message-sequencing#scheduled-messages