在域驱动设计(DDD)中跨越有界上下文共享元数据?

时间:2015-05-20 22:14:38

标签: domain-driven-design

我有一个奇怪的DDD问题需要解决。我有两个有界上下文(BC),一个用于订阅一个用于警报。

订阅BC具有业务规则形式的警报类型元数据,用于订阅订阅的警报类型。订阅者订阅警报类型后,另一个系统开始将这些警报发布到警报BC并持续存在。在发布时,警报BC知道警报类型id但不知道其元数据,例如警报名称和描述。这是可以的,因为在发布时需要存储的所有内容都是Alert with it's Alert Type Id。

然而,这是我开始崩溃的地方。需要获得用户发布的警报,并且作为该查询的一部分,它将包括来自订户BC的警报类型的元数据。由于BC一般应该是原子的,这开始偏离BC的意图。

确实如此,现在通常我认为如果我需要使用警报类型数据获取用户警报,那么我应该在发布时在我的警报BC中保留该警报类型数据的副本。但我受到限制,因为调用者只想在发布时发送AlertTypeId而不是额外的元数据。

由于很多原因,因为查询跨越BC是一个可怕的想法。我可以考虑使用域事件解决方案,例如带有事件监听器的ESB,但我觉得这对元数据来说太过分了。还想提一下这个元数据不会经常更改,因此可能会被缓存。

任何DDD专家都有任何建议来解决这个问题吗?任何投入将不胜感激。

1 个答案:

答案 0 :(得分:0)

决定采用缓存方法来处理元数据。缓存管理器将负责到期和重新水合。