有没有像 Azure Function Reminder Trigger 这样的东西?

Is there such a thing as an Azure Function Reminder Trigger?

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

我研究过计时器,但我不相信它们会做我想做的事情,队列也是如此。

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

我解决这个问题的方法是使用服务总线消息。每次安排提醒时,将 ScheduledEnqueueTimeUTC 属性 设置为所需时间(绝对 date/time)的消息发送到队列。

创建一个将由该服务总线队列触发的 Azure 函数。函数将在此之后很快被调用 date/time,因此您可以在那个时候发送提醒。

虽然陈旧乏味,但 SQL Table 就可以了。

提醒功能可以自动触发 ~5 分钟和 send/mark 未决提醒。

这听起来像是可以使用 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. 在您的 Workflow 中等待 Cancel 事件和 Timer elapsed 任务。
  5. 在您的 Workflow 中,通过启动 Activity 和 CallActivityAsync (https://azure.github.io/azure-functions-durable-extension/api/Microsoft.Azure.WebJobs.DurableOrchestrationContext.html)
  6. 来触发第一个任务