我在开发域名时遇到了一种情况,希望有人能帮我解决。
在我当前的项目中,我需要从缓存中读取所有存储的一种类型的聚合(比如说ClientAggregate)。我从服务层读取聚合,然后,对于每一个聚合,我获取当前聚合的锁以进行一些处理,然后将其保存回来。业务逻辑要求仅发送一个事件,其中包含有关已修改聚合的信息,因为侦听此事件的系统是遗留系统并且已定义了架构。
我遇到的问题是,由于此锁定过程,我发送的事件是从服务层而不是域发送的。该逻辑需要在一个事件中发送已经一起修改的聚合的信息。因为性能原因我需要单独锁定聚合,所以我无法将所有聚合传递给域服务来处理逻辑并生成事件。我在这里的选择是直接从域服务内部锁定,但然后我将基础架构逻辑泄漏到我的域中。
因此,在我当前的解决方案中,该服务包含域逻辑以迭代聚合并生成事件。在域服务中执行此操作,逻辑将在域中,但锁定机制将需要移动。第三种选择是为每个修改过的聚合发布一个事件,但是应该有一些东西能够全部消耗它们,等待整个过程完成,所以我不知道这是否是一个选项。
答案 0 :(得分:0)
业务逻辑要求只发送一个事件,其中包含有关已修改聚合的信息,因为侦听此事件的系统是遗留系统并且已经定义了模式。
这听起来不像是对我来说真实的域事件。如果是这样,您尝试以这种方式构建系统的原因将是,因为域的工作方式而不是“因为系统正在侦听此事件是遗留系统”。
所以你应该做的是: