使用 azure servicebus 对电子邮件进行排队

using azure servicebus to queue emails

我们刚刚将一些工作负载转移到我目前正在管理的 Azure,我阅读了一些关于服务总线的内容,想知道我是否可以用它来排队电子邮件

在 Azure 中托管的应用程序虽然使用自定义库,但会将其电子邮件传送到服务总线队列,其中一个或多个工作进程将从队列中挑选消息,然后通过邮件中继服务发送。

这将使我的开发人员无需了解我正在使用的邮件中继服务的详细信息,并且我还可以在发送之前对邮件进行进一步处理,而无需开发人员更改他们的代码。

我的问题是,这是否可能,如果可能,是否可取,在实施此类解决方案时是否需要注意任何事项。任何有关如何操作的指示也将不胜感激

有可能,而且是不错的选择。大多数电子邮件服务在其系统中使用队列。

您可以使用 priority property 队列。 Transactional Mails>Notification Mails>Marketing Mails,您可以将优先级从高到低。因为队列是先进先出的,交易邮件不应该等待营销邮件。

您可以在执行前使用Labels区分消息。

如果您尝试了一些尝试后仍无法发送电子邮件(Azure 默认为 10 次)。你应该把它移到死队列 azure service bus 为你做这件事。但是你应该消耗 deadqueue 来处理这些电子邮件。

在不了解您的系统、要求、消息传递与排队的需要的情况下,我将在下面说。

  • 如果您的应用程序需要消息传递,那么继续使用 Azure 服务总线来排队电子邮件。
  • 如果答案是 "no",请使用仅排队的东西:Azure 存储队列。

是的,将消息添加到 Azure 服务总线队列是一个合理的解决方案,应用程序稍后会检索这些消息,该应用程序会根据排队消息中的详细信息发送电子邮件。这是使用微服务方法分离各种应用程序的好方法,以提供电子邮件发送服务,以便在单个应用程序的不同部分内使用,甚至可以跨组织内的多个应用程序使用。

需要注意的一件事是 Azure 服务总线队列中的消息大小确实有最大大小限制。根据电子邮件中发送的内容的长度,您需要将消息的详细信息存储在某个地方,可能是数据库或 Azure Table 存储。然后,队列中的消息将包含一个标识符,例如 GUID,稍后当接收应用程序处理它以发送电子邮件时,可以使用它来查找消息详细信息。无论队列中消息的大小如何,电子邮件都会变得很长,因此使用这种方法可能是您的最佳选择,这样您以后的实施就不会遇到问题。