当聚集体的快照与事件日志同步成为了我可以简单地重放从早期快照我的事件(其应该是在同步)。相同的我可以做当我添加/删除新字段或当我修改现有处理程序的逻辑。

在情况下,我需要添加新的读取模式(即新的报表视图)我可以再次做同样的 - 我将重播我的事件

但我应该如何处理的情况下,当读取模型与事件日志成为同步了呢?事件的存储和发布在一个事务中,但读模型的更新发生在另一个事务,这可能会失败。从一开始就可以帮助重复事件,但它可以永恒。我是否需要快照的理念,为整个读取模式?

你怎么解决这个问题呢? 谢谢你。

有帮助吗?

解决方案

什么是在事件处理失败的原因?多久是 “永恒”?

读取模型更新很少失败(不像命令处理程序)中,由于内部逻辑是非常简单的。故障很可能是由瞬态问题(IO /网络中断)引起,并且将通过消息总线自动处理。

然而,如果读取模式成为损坏出于某种原因,那么最简单的方法将其重置并通过对流事件。甚至上百万的事件将采取的合理的时间量小。另外,你可以随时使用的map-reduce方法。

我建议反对引入快照读取模型。我想,这只是结构复杂化,没有任何显著的收益。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top