我正在尝试更多地了解DDD并正在经历DomainEvents. 假设我们有三个微服务Service A,Service B和Service C。
Service A有一个实体Foo定义如下:
public class Foo : AggregateRoot
{
public string id {get; private set;}
public string name {get; private set;}
public string email {get; private set;}
}
并且 theService B是一项依赖于 from 的服务,email而FootheService C依赖于namefrom并且只要via a的值发生变化,数据就会从to和 toFoo复制。Service AService BService CFooBus
我遇到的有关领域事件的指南:
- 不要将多余的信息作为
DomainEvent数据的一部分共享。 - 何时
consuming BoundedContext知道Producing BoundedContext可能共享 ID,否则共享完整信息 - 不要
DomainClasses用来表示事件中的数据 - 用于
Primitive types数据Events
现在由于指导方针冲突而出现的问题:
这是否意味着当它们发生变化时我应该触发两个不同的事件
FooNameChange并且FooEmailChanged只使用 theid和updated valueas 的一部分Event Payload?
或者我可以只进行一次DomainEvent调用FooChanged并获取Foo序列化它的状态并触发事件。然后编写一个处理程序作为处理程序的一部分,该处理程序BoundedContext将获取数据并将其放在Bus订阅消息的任何服务上,并且单个服务根据Id附加的和事件 arg(更新的数据)。