【问题标题】:Microservices architecture event collaboration pattern微服务架构事件协作模式
【发布时间】:2018-08-19 22:28:47
【问题描述】:

Martin Fowler 对事件协作模式 (https://martinfowler.com/eaaDev/EventCollaboration.html) 的描述似乎暗示服务运行所需的必要外部数据(来自其他服务的数据)应在服务内复制和维护。

这似乎暗示我们不应该诉诸于发出显式查询。 例如:

假设您有一个通信服务负责向客户发送电子邮件,并且依赖订单信息(位于订单服务中)发送订单确认电子邮件。

借助事件协作,通信服务将通过使用相关订单创建/修改事件来建立所有订单的某种内部表示。

在此示例中,无需查询来检索订单详细信息即可生成确认电子邮件。

在采用事件协作模式时,我们是否会使用显式查询消息而不是数据复制?

【问题讨论】:

    标签: microservices event-sourcing


    【解决方案1】:

    我认为即使在这种情况下,我也会在 Order Microservice Only 中创建 OrderPlaced 事件的消费者。该事件处理器将从 order 中读取所有详细信息,创建 MailToBeSent 事件并将其写入 Topic 或 Queue , CommunicationService 应该侦听并发送电子邮件。

    Communication Service 不应该明白,如何根据订单创建电子邮件(因为 cummunication 服务的核心目的是发送电子邮件)。

    在设计方面,通信服务也不应该在您每次添加需要邮件发送功能的新服务时进行更改。

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 2019-04-14
      • 2019-06-18
      • 2021-09-04
      • 2018-12-27
      • 2021-02-03
      • 2015-12-26
      相关资源
      最近更新 更多