如何从基于 Azure 的 MVC 应用程序启用提醒?
How to enable reminders from an Azure based MVC application?
当经理创建任务并设置未来的激活日期时,它应该存储在数据库中。直到到期前一两天,才会向相关员工发送任何消息。时间快到了,正在给下属发邮件
以前我已经解决了使用本地 运行 Windows 服务来安排消息传递的问题。然而,当我在 Azure 中实现类似的东西时,我不确定如何解决它(除了在云中实际托管我自己的 Windows 服务器,当然,但有点打败了整点) .
因为我的 MVC 应用程序是严格事件驱动的,所以我在 Azure 门户中四处浏览以找到一个实用程序来安排或推迟调用的方法。没有运气。所以目前,所有电子邮件都会立即分发,并通过将邮件保留在收件箱中直到时间(或手动设置约会)来执行计划。
我应该如何处理这个问题?
运行 后台任务的一个解决方案是使用 Web Jobs。 Web 作业可以 运行 按计划(假设每天一次)、手动或由队列中的消息触发。
您可以使用 Azure WebJobs。基本上,创建一个 WebJob 并安排它定期检查数据库中的数据以了解即将执行的任务,然后通知人们。
其他可能的解决方案是使用 Queueing
机制。您可以使用 Azure Storage Queues
或 Service Bus Queues
。
它的工作方式是当创建任务并将其保存在数据库中时,您将在队列中写入一条消息。此消息将包含有关任务的详细信息(可能是任务 ID)。但是,默认情况下该消息是不可见的,只有在一定时间后才会可见(您将根据需要发送电子邮件的时间来计算此时间段)。当可见性超时期限到期时,消息将可以在队列中使用。然后你将有一个 WebJob
和一个 Queue
触发器(即当队列中有消息时 WebJob
将变为活动状态)。在您的 WebJob
代码中,您将从数据库中获取任务信息并将通知发送给相关人员。
如果您使用 Azure Storage Queue
,您感兴趣的 属性 是 InitialVisibilityTimeout
。有关详细信息,请参阅此线程:Azure storage queue message (show at specific time).
如果您使用 Azure Service Bus Queue
,您感兴趣的 属性 是 BrokeredMessage.ScheduledEnqueueTimeUtc
。您可以在此处阅读有关此 属性 的更多信息:https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx.
当经理创建任务并设置未来的激活日期时,它应该存储在数据库中。直到到期前一两天,才会向相关员工发送任何消息。时间快到了,正在给下属发邮件
以前我已经解决了使用本地 运行 Windows 服务来安排消息传递的问题。然而,当我在 Azure 中实现类似的东西时,我不确定如何解决它(除了在云中实际托管我自己的 Windows 服务器,当然,但有点打败了整点) .
因为我的 MVC 应用程序是严格事件驱动的,所以我在 Azure 门户中四处浏览以找到一个实用程序来安排或推迟调用的方法。没有运气。所以目前,所有电子邮件都会立即分发,并通过将邮件保留在收件箱中直到时间(或手动设置约会)来执行计划。
我应该如何处理这个问题?
运行 后台任务的一个解决方案是使用 Web Jobs。 Web 作业可以 运行 按计划(假设每天一次)、手动或由队列中的消息触发。
您可以使用 Azure WebJobs。基本上,创建一个 WebJob 并安排它定期检查数据库中的数据以了解即将执行的任务,然后通知人们。
其他可能的解决方案是使用 Queueing
机制。您可以使用 Azure Storage Queues
或 Service Bus Queues
。
它的工作方式是当创建任务并将其保存在数据库中时,您将在队列中写入一条消息。此消息将包含有关任务的详细信息(可能是任务 ID)。但是,默认情况下该消息是不可见的,只有在一定时间后才会可见(您将根据需要发送电子邮件的时间来计算此时间段)。当可见性超时期限到期时,消息将可以在队列中使用。然后你将有一个 WebJob
和一个 Queue
触发器(即当队列中有消息时 WebJob
将变为活动状态)。在您的 WebJob
代码中,您将从数据库中获取任务信息并将通知发送给相关人员。
如果您使用 Azure Storage Queue
,您感兴趣的 属性 是 InitialVisibilityTimeout
。有关详细信息,请参阅此线程:Azure storage queue message (show at specific time).
如果您使用 Azure Service Bus Queue
,您感兴趣的 属性 是 BrokeredMessage.ScheduledEnqueueTimeUtc
。您可以在此处阅读有关此 属性 的更多信息:https://msdn.microsoft.com/en-us/library/microsoft.servicebus.messaging.brokeredmessage.scheduledenqueuetimeutc.aspx.