在需要构建新视图的场景中,我们可以重放EventStore中的所有事件。因此,我们会预测新的观点。事件源:避免项目重复事件,同时重播事件并收听新来的事件
因此,这个想法是部署一个新的投影,投影所有旧事件(通过重放),并听取新的传入事件并进行投影。
我认为比赛条件可能发生在阅读旧事件和收听新来的事件。因此,我们可以多次投影同一个事件,然后破坏新视图。
那么,在要重播的事件和新的传入事件之间画一条线是一种好方法?
谢谢!
在需要构建新视图的场景中,我们可以重放EventStore中的所有事件。因此,我们会预测新的观点。事件源:避免项目重复事件,同时重播事件并收听新来的事件
因此,这个想法是部署一个新的投影,投影所有旧事件(通过重放),并听取新的传入事件并进行投影。
我认为比赛条件可能发生在阅读旧事件和收听新来的事件。因此,我们可以多次投影同一个事件,然后破坏新视图。
那么,在要重播的事件和新的传入事件之间画一条线是一种好方法?
谢谢!
EventStore通过Catch-up Subscriptions
支持这种情况下您会指定流作为起点用户的一开始,就再处理的所有事件,直到“现在”,然后开始听而来事件in。
Connection.SubscribeToStreamFrom(
StreamName,
checkpoint,
resolveLinkTos,
OnEventReceived,
OnLiveProcessingStarted,
OnSubscriptionDropped);
您甚至会在您开始处理实况时收到事件。 :)对于这样的事情
更普遍的建议是:
从Greg Young的通话记录,我可以总结一下EventStore的工作原理类似Atom提要。因此,预测(aka用户)轮询事件是因为跟踪哪个用户保持的id。
然后EventStore不知道新投影是否需要重播所有事件。 EventStore,在Greg Young的话,接收
给我'n个事件 'X'
不,你没有正确描述GES后。当他们的客户使用GES进行集成和其他外来原因时,您已经听他的谈话描述了一些边缘用例。虽然是完全有效的用例,但这与事件采购无关。 –
对不起,我没有看到这与原始问题有关。你是正确的,订阅者在流中的位置是订阅者的责任,但你原来的问题是关于提出一个新的订阅者,并避免处理我认为我的答案涉及的重复事件。在这个例子中,X是流的开始(-1?)。也同意alexey,这不是与事件采购 – tomliversidge
@AlexeyZimarev,(@)tomliversidge请检查下面的谈话从41:30 https://www.youtube.com/watch?v=uBzS9JoMJW0也许我不明白但是我认为他解释得很好。否则,请用新的答案澄清。我会感激的。 – martinezdelariva