在MVC应用程序中排队电子邮件

时间:2019-05-03 15:18:02

标签: .net email model-view-controller queuing

我是为我们的组织构建专有的学习管理系统的团队的一部分。当用户注册了在线课程后,我们会向用户发送一封电子邮件,其中包含有关登录以进行其课程的说明。大量注册用户时,显然这会导致一些性能问题。我正在研究开发一种用于对电子邮件进行排队然后异步发送的框架。

我们的平台通过Azure Web应用程序和Azure SQL数据库进行部署。它是用.NET MVC编写的,我们正在通过SMTP发送电子邮件。

有人对最佳做法有什么建议吗?或者最有效的方法是什么?我研究了Azure Service Bus,第三方开源解决方案(例如Hangfire),并编写了一个标准的控制台应用程序来处理要发送的电子邮件的数据库表。

1 个答案:

答案 0 :(得分:0)

您在正确的道路上。 Azure Service Bus和Azure Functions将满足您的需求。流程将是:

  1. 用户注册
  2. 消息已发送到服务总线队列
  3. Azure函数触发器处理队列消息并发送电子邮件。

Azure Service Bus bindings for Azure Functions

Get started with Service Bus queues

如果您决定使用Hangfire,则最好使用Hangfire.Azure.ServiceBusQueue软件包。

  

增加了对将Azure Service Bus队列与Hangfire的SQL结合使用的支持   存储提供商以减少延迟并消除轮询   新工作的数据库。

     

所有作业数据将继续存储和维护在SQL存储中,   但删除了轮询,以利于通过   服务总线。