这是一个关于在我们使用 ES 和 CQRS 和 DDD 的系统中引入新 BC 的理论问题。所以不会有具体的例子。
引入新的 BC-s 可能会出现有趣的问题,新的 BC-s 通过接收和发布域事件与旧的通信。这些问题的根源在于我们在事件存储中已经有了领域事件。当新的 BC 对那些旧的域事件做出反应时,它会以不同步和/或失序的方式进行。
例如,我们有一个旧的 BCA
并且我们引入了一个新的 BC B
。两者都发布我们称之为a
和的领域事件b
。例如,在新系统中,订单事项b1
必须始终在之后a1
,但在之前a2
。当我们已经在事件存储中拥有a1
, a2
,序列时,我们能做什么?a3
我们应该注射b1
之后a1
等等吗?这是一个巨大的事件存储的可行解决方案吗?将所有旧事件一一重播并做出反应肯定需要很长时间。我们如何通过处理新创建的b1
事件来防止向客户发送电子邮件,该事件对 5 年前的主题作出反应?是否有防止此类问题的模式?