微服务架构中的电子邮件
emailing in microservice architecture
抱歉我的英语不好 - 如果有什么不清楚的地方请在评论中问我 - 我会澄清的。
我在微服务架构中构建系统。我有一项包含用户信息的服务,一项针对 "offers" 的服务,一项针对 "ideas" 的服务。服务 "offers" 和 "ideas" 在登录和其他操作上与 "User" 服务通信(通过 Restful API)。我想知道 - 如何处理电子邮件?每个服务都有独立的前端,并在执行某些操作后发送电子邮件(例如,当某些第三方打开 link 某些报价时,创建此报价的用户将收到电子邮件,或者当某些用户提出想法时,经理将收到电子邮件) .此外,在每个服务前端,经理可以创建 "periodic" 邮件,其中包含季节统计数据或其他一些信息。每封服务电子邮件的外观和内容都不同。
我有很多选择,不知道哪个更好。这是一些建议:
- 每个服务都有自己独立的邮件系统,发送各种邮件
电子邮件(操作后和定期)独立。
- "user service" 有 "engine" 发送操作和定期电子邮件和其他服务来完成任务。 task里面有link服务谁给task,那个link会生成邮件内容(比如周期邮件中的统计数据)。这个解决方案很复杂...
- "user service" 只有定期发送电子邮件的引擎(任务有 link 生成电子邮件正文...)但是每个微服务独立发送操作后的电子邮件
- 创建新的微服务,仅用于使用适当的 API 发送电子邮件(定期和 "after action")。当然,像 "offers" 这样的每个服务也应该在邮件任务中发送 link(给他们自己)——这个 link 将在发送定期电子邮件和这个 [=41= 的响应时被调用] 将生成电子邮件正文....
哪个会更好?或者可能有更好的选择?
发送电子邮件就像向另一项服务发出请求(通过 SMTP)。因此,当每个服务都能够发送电子邮件时,这是一个很好的方法。
但是,发送电子邮件当然有一些通用逻辑,例如呈现模板、发送代码、配置等。此逻辑应通过公共代码(dll、包等)在服务之间共享。
所以,这样:
- 每个服务在需要发送电子邮件时都不依赖于另一个服务
- 发送电子邮件的通用代码在服务之间共享
- 在提供专用电子邮件发送服务的情况下,您没有开发、部署和网络开销
此方法的一个缺点是每个服务都应具有相同的电子邮件配置(SMTP 地址、登录名、密码等)。但是,如果您在所有服务之间共享配置,这不是问题。
抱歉我的英语不好 - 如果有什么不清楚的地方请在评论中问我 - 我会澄清的。
我在微服务架构中构建系统。我有一项包含用户信息的服务,一项针对 "offers" 的服务,一项针对 "ideas" 的服务。服务 "offers" 和 "ideas" 在登录和其他操作上与 "User" 服务通信(通过 Restful API)。我想知道 - 如何处理电子邮件?每个服务都有独立的前端,并在执行某些操作后发送电子邮件(例如,当某些第三方打开 link 某些报价时,创建此报价的用户将收到电子邮件,或者当某些用户提出想法时,经理将收到电子邮件) .此外,在每个服务前端,经理可以创建 "periodic" 邮件,其中包含季节统计数据或其他一些信息。每封服务电子邮件的外观和内容都不同。
我有很多选择,不知道哪个更好。这是一些建议:
- 每个服务都有自己独立的邮件系统,发送各种邮件 电子邮件(操作后和定期)独立。
- "user service" 有 "engine" 发送操作和定期电子邮件和其他服务来完成任务。 task里面有link服务谁给task,那个link会生成邮件内容(比如周期邮件中的统计数据)。这个解决方案很复杂...
- "user service" 只有定期发送电子邮件的引擎(任务有 link 生成电子邮件正文...)但是每个微服务独立发送操作后的电子邮件
- 创建新的微服务,仅用于使用适当的 API 发送电子邮件(定期和 "after action")。当然,像 "offers" 这样的每个服务也应该在邮件任务中发送 link(给他们自己)——这个 link 将在发送定期电子邮件和这个 [=41= 的响应时被调用] 将生成电子邮件正文....
哪个会更好?或者可能有更好的选择?
发送电子邮件就像向另一项服务发出请求(通过 SMTP)。因此,当每个服务都能够发送电子邮件时,这是一个很好的方法。
但是,发送电子邮件当然有一些通用逻辑,例如呈现模板、发送代码、配置等。此逻辑应通过公共代码(dll、包等)在服务之间共享。
所以,这样:
- 每个服务在需要发送电子邮件时都不依赖于另一个服务
- 发送电子邮件的通用代码在服务之间共享
- 在提供专用电子邮件发送服务的情况下,您没有开发、部署和网络开销
此方法的一个缺点是每个服务都应具有相同的电子邮件配置(SMTP 地址、登录名、密码等)。但是,如果您在所有服务之间共享配置,这不是问题。