2016-03-15 82 views
1

我们刚搬到我们的一些工作负载的天青对此我目前管理的,我读了一些关于服务总线,并想知道如果我可以用它来排队的邮件在托管使用蔚蓝servicebus排队邮件

应用虽然自定义库的使用将把他们的电子邮件发送到服务总线队列,其中一个或多个工作进程将从队列中选择消息并通过邮件中继服务发送。

这将释放从邮件中继服务,我使用在任何时候的细节我的开发人员和我也可以发送不含开发商改变他们的代码之前执行的消息的进一步处理。

我的问题是,这是可能的,如果是,是可取的,有什么我需要提防实现这样的解决方案时。任何指导如何做到这一点也不胜感激

+0

是的,这是可能的,你到现在为止尝试过什么?它只是一个处理工作量的排队系统。 – Peter

+0

我还没有尝试过,只是习惯了天蓝色的基础设施,我只想知道它是值得付出的努力还是它的死胡同。我也想知道它是不是一个好主意 – araoko

回答

1

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

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

+0

你知道序列化MailMessage对象的有效方法吗?我想要一个情况,这个库的用户将像通常那样创建邮件消息,但是通过库发送,到目前为止我看到的所有实现都涉及使用.net类的内部方法,可以随时更改首先将对象序列化到磁盘,然后读取它可能会影响性能。 – araoko

+0

@araoko序列化MailMessage不是我曾经尝试过的。我不会推荐这个。电子邮件消息可能相当长,并且比服务总线队列消息的可用消息大小更容易使用。我建议您创建类似于MailMessage的类,然后使用队列消息中的指针将其存储在Table Storage中。 –

+0

我想按照您的建议将MailMessage序列化为blob存储,并在队列上传递指向它的指针。如果我创建自己的班级,这意味着所有现有的代码将改为使用我的班级,我宁愿作为最后的手段。 – araoko

0

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

您可以使用队列priority property。交易邮件>通知邮件>营销邮件,您可以从高到低排列。因为队列工作FIFO和事务邮件不应该等待营销邮件。

您可以使用Labels区分的消息,implemantation之前。

如果您在某些尝试之后无法发送电子邮件(Azure的默认值为10)。你应该把它移动到死队列天蓝色的服务总线为你做这个。但是,您应该使用deadqueue来处理此电子邮件。

0

不知道你的系统要求,需要在消息队列VS什么,我会说以下。

  • 如果您的应用程序需要消息传递,那么请继续并使用Azure服务总线来排队电子邮件。
  • 如果答案为“否”,请使用单独排队的东西:Azure存储队列。