0

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

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

有没有人对最佳实践有任何建议,或者什么是实现这一目标的最有效方法?我研究了 Azure 服务总线、第三方开源解决方案(例如 Hangfire),并编写了一个标准控制台应用程序来处理要发送的电子邮件的数据库表。

4

1 回答 1

0

你走在正确的道路上。Azure 服务总线和 Azure Functions 将满足您的需求。流程将是:

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

Azure Functions 的 Azure 服务总线绑定

开始使用服务总线队列

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

添加了对将 Azure 服务总线队列与 Hangfire 的 SQL 存储提供程序一起使用的支持,以减少延迟并消除轮询数据库以获取新作业的需要。

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

于 2019-05-03T18:36:49.730 回答