是否有Azure功能提醒触发器这样的东西?

时间:2018-02-22 09:27:07

标签: azure azure-functions reminders

我想用azure函数编写一个提醒类型系统。我的计划是使用http触发器创建一个函数,该函数会创建提醒,然后是第二个在该提醒到期时发送电子邮件的函数。

我已经调查了计时器,我不相信他们会做我以后的事情,同样也会排队。

是否有一个内置的计时器,它将在一个可配置的时间(X小时或Y:00pm)激活一个功能,还是应该回到我的计划来创建一个计时器功能来轮询数据库?

3 个答案:

答案 0 :(得分:6)

我遇到此问题的方法是使用Service Bus消息。每次安排提醒时,都会向您的队列发送一条消息,并将ScheduledEnqueueTimeUTC属性设置为您想要的时间(绝对日期/时间)。

创建一个Azure功能,该功能将由此Service Bus队列触发。函数将在该日期/时间之后很快被调用,因此您可以在此时发送提醒。

答案 1 :(得分:1)

这听起来像是可以使用Azure Durable Functions(https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-overview)创建的工作流程。

  1. 接收HTTP触发器时,使用DurableOrchestrationClient.StartNewAsync方法(https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-instance-management)创建新的工作流程
  2. 在您的工作流程中,在您需要提醒时创建一个新的计时器(https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-timers
  3. 在您的工作流程中创建一个等待ReminderCancel事件(https://docs.microsoft.com/en-us/azure/azure-functions/durable-functions-external-events)的任务。注意:您可以从任何其他触发的函数(HTTP触发器,队列触发器......)中引发ReminderCancel事件。
  4. 在您的工作流程中,等待取消事件和计时器已用完的任务。
  5. 在您的工作流程中,通过使用CallActivityAsync(https://azure.github.io/azure-functions-durable-extension/api/Microsoft.Azure.WebJobs.DurableOrchestrationContext.html
  6. 启动活动,对要触发的第一个任务执行操作

答案 2 :(得分:-1)

虽然陈旧无聊,但SQL表可以正常工作。

提醒功能可以自动触发约5分钟并发送/标记待处理的提醒。