在需要构建新视图的场景中,我们可以重播 EventStore 中的所有事件。因此,我们将投射新视图。
因此,我们的想法是部署一个新投影,投影所有旧事件(通过重播),并监听新传入事件并投影它们。
我认为在阅读旧事件和收听新传入事件时可能会出现种族情况。因此,我们可以多次投影同一事件,然后破坏新视图。
那么,在要重放的事件和新的传入事件之间画一条线的好方法是什么?
谢谢!
答案 0 :(得分:2)
EventStore通过Catch-up Subscriptions
支持此方案您可以指定流的最开头作为订阅者的起点,然后将处理所有事件直到"现在"然后开始听取进来的事件。
Connection.SubscribeToStreamFrom(
StreamName,
checkpoint,
resolveLinkTos,
OnEventReceived,
OnLiveProcessingStarted,
OnSubscriptionDropped);
当您开始处理直播时,您甚至会收到一个事件。 :)
关于此类事情的更一般性建议:
答案 1 :(得分:0)
从Greg Young的演讲中,我可以总结出 EventStore 的工作原理类似于Atom提要。因此,投影(也称订阅者)会轮询事件,因为 id 跟踪哪个订阅者维护。
然后,EventStore对新投影是否需要重播所有事件一无所知。在Greg Young的话中,EventStore收到了
给我一些事件'在' x'
之后