事件采购 - 如何恢复错过的事件

时间:2013-03-28 13:54:07

标签: domain-driven-design cqrs

假设我在两个单独的服务中部署了两个聚合。 Aggregate 2监听聚合1的事件。

当我长时间停止聚合服务2时,如何恢复所有错过的事件?

  1. 从聚合1事件存储中检索所有错过的事件?
  2. 如果聚合1已经积累了很多事件怎么办?是否允许聚合2使用聚合1的快照?

2 个答案:

答案 0 :(得分:1)

  

1)从聚合1事件存储中检索所有错过的事件?

  

2)如果聚合1已经累积了很多事件怎么办?聚合2是否允许使用聚合1的快照?

但是,在严重断开连接的环境中,分区容差优先于一致性,您必须为聚合2处理的所有事件安排补偿操作。确实您可以遇到如果已经从聚合1中正确接收了事件,那么聚合2处理过的事件将无法实现。

答案 1 :(得分:1)

  

从聚合1事件存储中检索所有错过的事件?

是的,这将是一般方法。在基础架构级别,您可以记住上次看到的序列号,然后请求将此后的事件推送给您。

  

如果聚合1已经累积了很多事件怎么办?聚合2是否允许使用聚合1的快照?

这里的答案可能不是 - 如果两者能够共享快照,则可能值得重新考虑聚合边界是否正确。然而,它实际上取决于聚合物1的饲料的性质。我通常会避免这种情况,除非你真的遇到了必要的问题。