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