微服务架构中的电子邮件

时间:2017-01-02 22:08:52

标签: rest email microservices restful-architecture email-integration

对不起我的英语 - 如果有些事情不清楚请在评论中问我 - 我会澄清这一点。

我在微服务架构中构建系统。我有一个服务包含用户信息,一个服务用于“优惠”,一个服务用于“创意”。服务“提供”和“想法”通过Restful API(登录和其他操作)提供“用户”服务。我想知道 - 如何处理电子邮件?每个服务都有单独的前端,并在某些操作后发送电子邮件(例如,当某些第三人打开链接时,某些提供创建此优惠的用户将收到电子邮件,或者当某个用户创建想法时,管理员将收到电子邮件)。此外,在每个服务前端,经理可以使用季节统计数据或其他一些信息创建“定期”邮件。每个服务电子邮件的外观都不同,并且内容不同。

我有很多选择,不知道哪个更好。这是一些主张:

  1. 每项服务都有自己独立的电子邮件系统并发送各种服务 电子邮件(在行动之后,并定期)独立。
  2. “用户服务”有“引擎”发送动作,定期发送电子邮件和其他服务给出任务。内部任务中有指向任务的服务链接,该链接将生成电子邮件内容(例如定期电子邮件中的女巫统计数据)。这个解决方案很复杂......
  3. “用户服务”只有引擎定期发送电子邮件(任务有链接生成电子邮件正文......)但是每个微服务独立者发送动作后发送电子邮件
  4. 仅为使用适当的API发送电子邮件(定期和“行动后”)创建新的微服务。当然,像“商品”这样的服务也应该在邮寄任务中发送链接(对自己) - 这个链接将在定期发送电子邮件时被调用,并且该链接的响应将生成电子邮件正文....
  5. 哪一个更好?或者可能有更好的选择?

1 个答案:

答案 0 :(得分:5)

发送电子邮件就像向另一项服务发送请求(通过SMTP)。因此,当每个服务都能够发送电子邮件时,这是一个很好的方法。

但是,当然有一些常见的逻辑用于发送电子邮件,如渲染模板,发送代码,配置等。这个逻辑应该通过公共代码(dll,包等)在服务之间共享。

所以,就这样:

  1. 每个服务在需要发送电子邮件时都不依赖于其他服务
  2. 发送电子邮件的公共代码在服务之间共享
  3. 如果有专门的电子邮件发送服务
  4. ,您没有开发,部署和网络开销

    此方法的一个缺点是每个服务都应具有相同的电子邮件配置(SMTP地址,登录名,密码等)。但是如果你在所有服务之间共享配置,这不是问题。