我是为我们的组织构建专有的学习管理系统的团队的一部分。当用户注册了在线课程后,我们会向用户发送一封电子邮件,其中包含有关登录以进行其课程的说明。大量注册用户时,显然这会导致一些性能问题。我正在研究开发一种用于对电子邮件进行排队然后异步发送的框架。
我们的平台通过Azure Web应用程序和Azure SQL数据库进行部署。它是用.NET MVC编写的,我们正在通过SMTP发送电子邮件。
有人对最佳做法有什么建议吗?或者最有效的方法是什么?我研究了Azure Service Bus,第三方开源解决方案(例如Hangfire),并编写了一个标准的控制台应用程序来处理要发送的电子邮件的数据库表。
答案 0 :(得分:0)
您在正确的道路上。 Azure Service Bus和Azure Functions将满足您的需求。流程将是:
Azure Service Bus bindings for Azure Functions
Get started with Service Bus queues
如果您决定使用Hangfire,则最好使用Hangfire.Azure.ServiceBusQueue软件包。
增加了对将Azure Service Bus队列与Hangfire的SQL结合使用的支持 存储提供商以减少延迟并消除轮询 新工作的数据库。
所有作业数据将继续存储和维护在SQL存储中, 但删除了轮询,以利于通过 服务总线。