首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建自定时触发函数?

如何创建自定时触发函数?
EN

Stack Overflow用户
提问于 2019-03-21 11:44:23
回答 3查看 955关注 0票数 1

寻找一些自触发功能,在给定的时间开始。

例如:用户要在25/04/2019 05:30开始会议,用户应在25/04/2019 05:25 | 05:29收到会议即将开始的通知。

我创建了一个azure函数(Time triggred),它每分钟触发一次,并检查当前时间是否为会议时间-4分钟,然后发送有关会议开始的通知。

将来会有多个用户,所以我不希望函数每分钟运行一次,有没有一种方法可以让函数在05:25或会议时间自动执行。所以可以有100个用户,他们会有不同的用户。我只是在寻找如何以更好的方式实现的选项。

托管在azure上的.net核心站点每分钟运行一次azure函数,以检查其余部分

EN

回答 3

Stack Overflow用户

发布于 2019-03-22 14:25:07

当用户在会议上注册时,您可以使用visibility delay将消息(包含用户详细信息)排队到队列中

代码语言:javascript
复制
queue.AddMessage(message, initialVisibilityDelay: TimeSpanDelay);

例如,用户在下午6点注册,而会议将在第二天下午8点,因此延迟时间将是25小时零55分钟(假设用户希望在会议前5分钟收到通知)。然后,代替时间触发函数,您将使用队列触发函数,当来自队列的消息变得可见时,该函数将发送通知:

代码语言:javascript
复制
public static void Run([QueueTrigger("notifications")]QueueTrigger message, TraceWriter log)
{
    Notifier.Send(message.UserName, message.UserPhoneNumber, message.Email);
}

此外,如果由于某种原因,您的通知处理程序将失败,队列消息不会丢失,因此您可以多次重试处理它们。

票数 4
EN

Stack Overflow用户

发布于 2019-03-21 11:54:53

我建议您使用quartz库编写一个windows服务来调度作业。您可以从db或其他地方获取作业调度时间。

参考:https://www.quartz-scheduler.net

票数 0
EN

Stack Overflow用户

发布于 2019-03-22 14:02:13

根据您的描述,您已经有了一个TimerTrigger函数,但是您的计时器会将该函数设置为每分钟运行一次。实际上,您可以使用CRON表达式设置更精确的定时器触发器。

这是Azure函数中的CRON表达式,它包括六个字段:{second} {minute} {hour} {day} {month} {day-of-week}。这样你就可以设置你的函数0 25,29 5 22 March *了。

在你将函数部署到Azure后,它将继续运行,但它不会执行Run方法,直到它触发计时器。

代码语言:javascript
复制
public static void Run(TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55273472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档