假设我在两个单独的服务中部署了两个聚合。 Aggregate 2监听聚合1的事件。
当我长时间停止聚合服务2时,如何恢复所有错过的事件?
答案 0 :(得分:1)
1)从聚合1事件存储中检索所有错过的事件?
是
2)如果聚合1已经累积了很多事件怎么办?聚合2是否允许使用聚合1的快照?
是
但是,在严重断开连接的环境中,分区容差优先于一致性,您必须为聚合2处理的所有事件安排补偿操作。确实您可以遇到如果已经从聚合1中正确接收了事件,那么聚合2处理过的事件将无法实现。
答案 1 :(得分:1)
从聚合1事件存储中检索所有错过的事件?
是的,这将是一般方法。在基础架构级别,您可以记住上次看到的序列号,然后请求将此后的事件推送给您。
如果聚合1已经累积了很多事件怎么办?聚合2是否允许使用聚合1的快照?
这里的答案可能不是 - 如果两者能够共享快照,则可能值得重新考虑聚合边界是否正确。然而,它实际上取决于聚合物1的饲料的性质。我通常会避免这种情况,除非你真的遇到了必要的问题。