我目前每个聚合根和两个聚合根有一个事件流,Room
并且RoomType
.
a 的行为Room
取决于RoomType
它是什么。为了分离两个聚合, TheRoomType
仅表示为聚合中的 roomTypeId Room
。变化RoomType
由RoomTypeChanged
事件表示。
可以单独管理,RoomTypes
并且需要在不同的聚合中。
现在考虑以下用例:
当用户使 a 无效时RoomType
,所有Rooms
拥有它的人都Roomtype
应该切换到 fallback RoomType
。
我已经想到了几种方法,但它们似乎都有问题:
让事件侦听器侦听-event,并在所有具有该事件的 -aggregates 上
RoomTypeInvalidated
发送一个。我该怎么做呢?除非我访问我的 readmodel,否则无法知道哪些聚合具有它,这似乎不正确。即使我要加载所有聚合,也无法仅加载该类型的聚合,因为我无法加载所有流的子集(使用 geteventstore)。SwitchToFallbackRoomType
Room
Roomtype
Roomtype
当将
RoomTypeChanged
-events 重新应用到Room
聚合时,而不是仅仅应用它,检查它是否RoomType
仍然存在,但话又说回来,我怎么知道哪个RoomTypes
存在(我会和 1 处于相同的情况,但倒置) ? 此外,在重新应用事件时加入逻辑似乎是错误的,我认为它们应该只代表状态变化。
你会如何解决这个问题?