我正在开发一个事件源应用程序,该应用程序可以抓取来自不同博彩公司的体育博彩游戏。我的系统中有两个主要聚合:
我想确保流中的所有事件共享相同的相关ID。理想情况下:
在游戏开始时间发生显着变化(超过 30 分钟)之前,这种方法很有效。在这种情况下,游戏从其原始组合游戏中移除并放入新的组合游戏桶中。这里的问题是原始游戏流中的correlation ID变得过时,因为它仍然指向旧的组合游戏。由于不应更改流中先前事件的相关 ID,因此没有直接的方法来更新与此游戏相关的未来事件的相关 ID。
我的一个想法是当游戏的开始时间发生显着变化时创建一个新流。旧流将发出一个
GameMovedToNewStream
事件,该事件指向新流。然而,这会导致游戏的事件历史记录被分割到多个流中。
我正在寻求建议,了解我当前的方法是否符合事件溯源的最佳实践,或者是否有更优雅的方法来处理这种情况。
在重新评估我如何处理现有预测中的
CombinedGame
和 BookmakerGame
事件后,我决定改变方法。
我没有让博彩公司游戏与组合游戏共享关联 ID,而是在与原始
BookmakerGame
事件相同的事务中复制 CombinedGame
流本身中的“游戏配对/组合”事件。这完全消除了对组合游戏流的依赖。
因此,当游戏配对时,两个事件将保存在单个事务中:
CombinedGame::GameAdded
BookmakerGame::GameAddedToCombinedGame