Ken*_*eth 5 event-sourcing get-event-store
我目前每个聚合根和两个聚合根有一个事件流,Room并且RoomType.
a的行为Room取决于它的含义RoomType.为了分离两个聚合,The在聚合RoomType中仅表示为roomTypeId Room.更改RoomType由RoomTypeChanged事件表示.
该RoomTypes可单独管理,并需要在不同的骨料.
现在考虑以下用例:
当用户使a无效时RoomType,所有Rooms具有该功能的Roomtype应该切换到回退RoomType.
我想到了几种方法,但所有方法似乎都有问题:
让一个事件监听器监听一个RoomTypeInvalidated-event,然后发送一个有SwitchToFallbackRoomType所有的Room-aggregates Roomtype.我怎么会这样做?Roomtype除非我访问我的readmodel,这似乎是不正确的,否则无法知道哪些聚合有.即使我要加载所有聚合,也无法仅加载该类型的聚合,因为我无法加载所有流的子集(使用geteventstore).
当重新将RoomTypeChanged-events应用于Room聚合时,而不仅仅是应用它,检查是否RoomType仍然存在,但是再次,我怎么知道哪个RoomTypes存在(我和1的情况相同,但是反转) ?此外,在重新应用事件时加入逻辑似乎是错误的,它们应该只代表我认为的状态变化.
你怎么解决这个问题?
为什么不为每个房间类型使用一个流程管理器并将房间列表作为流程管理器的属性?
从服务或命令处理程序查询读取模型并不能保证框架的一致性。如果房间已分配给无效的房间类型但读取的模型尚未更新怎么办?(这就是我面临的场景)