通过 SendGrid 发送电子邮件时,Azure Web 应用程序是不是必须使用消息队列

Posted

技术标签:

【中文标题】通过 SendGrid 发送电子邮件时,Azure Web 应用程序是不是必须使用消息队列【英文标题】:Is message queueing mandatory for Azure web app when sending emails through SendGrid通过 SendGrid 发送电子邮件时,Azure Web 应用程序是否必须使用消息队列 【发布时间】:2015-05-13 16:46:28 【问题描述】:

我有一个通过 SendGrid 服务发送电子邮件的 Azure Web 应用程序(Asp.net MVC 和 WebAPI)。我没有使用 SendGrid 的 API,而是使用我在 web.config 中配置并定向到 SendGrid 的 .net 内置 SMTP。

我现在想知道我的解决方案中是否还需要消息队列应用程序,该应用程序将用于实际向 SendGrid 发送电子邮件,以最大限度地减少我的网络应用程序的请求/响应时间?

Azure 已经有我可以使用的队列存储,但我想知道其他人是如何实现的?我也在寻找最简单的 Azure Web 应用程序使用队列(如果存在)的示例。

我希望当我在单个请求期间要发送多封电子邮件以使我的应用程序可扩展时,消息队列将变得相关。目前,当我的后端执行代码时,我正在同步发送电子邮件,到目前为止,由于电子邮件数量很少,它工作正常。

【问题讨论】:

【参考方案1】:

如果您的应用程序需要异步管理和发送批量电子邮件,最好有单独的应用程序将电子邮件作为批量发送。

在我最近的项目中,我使用 Web 角色、工作者角色和服务总线队列创建了单独的应用程序。 Web 角色是一个 Web API,用于应用程序发布批量电子邮件并将其放入服务总线队列。然后工作角色将负责处理队列并发送电子邮件。这使我能够异步发送电子邮件并将任何电子邮件消息或消息状态存储在表存储中。

此外,这种方法通过使用包装器来处理 Web api 集成,帮助我在不同的项目中使用相同的通知应用程序(电子邮件发送应用程序)。

【讨论】:

我们处于开发阶段,整个想法是支持音量。此应用程序将促进大量的批量电子邮件(数千),目前可能在 300 左右,但我们可以增加工作者角色的数量以支持大量的批量电子邮件。

以上是关于通过 SendGrid 发送电子邮件时,Azure Web 应用程序是不是必须使用消息队列的主要内容,如果未能解决你的问题,请参考以下文章

powershell 使用SendGrid从PowerShell发送电子邮件(在Azure中)

通过 sendgrid/mail 发送时,如何向我的电子邮件添加取消订阅链接

通过Sendgrid API发送电子邮件时出错

通过 Firebase 函数发送电子邮件时出现 Firebase SendGrid 错误 - 错误:错误请求

SendGrid 电子邮件作为垃圾邮件被拒绝

Sendgrid - 活动显示已发送电子邮件但未收到电子邮件