我正在尝试更多地了解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
而Foo
theService C
依赖于name
from并且只要via a的值发生变化,数据就会从to和 toFoo
复制。Service A
Service B
Service C
Foo
Bus
我遇到的有关领域事件的指南:
- 不要将多余的信息作为
DomainEvent
数据的一部分共享。 - 何时
consuming BoundedContext
知道Producing BoundedContext
可能共享 ID,否则共享完整信息 - 不要
DomainClasses
用来表示事件中的数据 - 用于
Primitive types
数据Events
现在由于指导方针冲突而出现的问题:
这是否意味着当它们发生变化时我应该触发两个不同的事件
FooNameChange
并且FooEmailChanged
只使用 theid
和updated value
as 的一部分Event Payload
?
或者我可以只进行一次DomainEvent
调用FooChanged
并获取Foo
序列化它的状态并触发事件。然后编写一个处理程序作为处理程序的一部分,该处理程序BoundedContext
将获取数据并将其放在Bus
订阅消息的任何服务上,并且单个服务根据Id
附加的和事件 arg(更新的数据)。