2

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

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

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

2 回答 2

1

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

是的。

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

是的。

但是,在一个高度断开连接的上下文中,分区容错性优于一致性,您必须为聚合 2 处理的所有事件安排补偿操作。实际上,您可能会遇到聚合 2 处理的事件如果它无法处理的情况。已正确接收来自聚合 1 的事件。

于 2013-03-28T14:45:33.607 回答
1

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

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

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

这里的答案可能不是——如果两者能够共享快照,那么首先可能值得重新考虑聚合边界是否正确。但是,这实际上取决于聚合 1 的提要的性质。我通常会避免这种情况,除非您确实遇到了必要的问题。

于 2013-03-31T19:53:03.463 回答