CQRS,ES:如何知道我们是否必须重新排序/忽略读取端的事件?

时间:2019-05-15 13:41:14

标签: events event-handling cqrs event-sourcing

我和我的团队目前在CQRS和事件源系统的读取端工作。 我们希望我们的投影仪只能收听所有事件的一部分,并且我们希望我们的投影仪是幂等的,因为事件可以发布多次。 这是我们当前的架构: current architecture

既然放映员不能处理所有事件,那么如何知道未按照正确的顺序接收事件还是已经接收到事件呢?我们无法使用序列号,因为序列号与流相关,而不与事件类型相关。

“投影师”,“投影分类帐”和“投影仪”一词来自this article

2 个答案:

答案 0 :(得分:2)

  

如何知道我们是否必须重新排列/忽略读取端的事件?

“总线”不是事件顺序的授权者-责任在于事件存储。因此,需要知道事物发生什么顺序的放映员应该查询商店,而不是尝试根据公共汽车上的信息来重建原始顺序。

格雷格·杨(Greg Young)在2014年的演讲Polyglot Data中对这一点进行了很好的讨论。

(放映员可能会通过某些API查询事件存储,而不是直接与存储进行交谈-基于存储中数据的精选原子供稿)。

答案 1 :(得分:0)

就像@VoiceOfUnreason所提出的那样,由于事件被存储在CosmosDB中,因此我们通过抛弃总线并用CosmosDB的变更提要处理器替换了该问题,从而解决了该问题。到目前为止,我们对该解决方案没有任何问题。变更提要处理器具有开箱即用的功能,可以管理检查点并将事件广播到每台投影机!