课件和 Demo 地址
https://gitee.com/geektime-geekbang/NET-Core
作者回复: 可以为查询的Request类型标注特定的Attribute或者接口,在PipelineBehavior识别并跳过
作者回复: 是这样的,但并不是所有的“副作用"都需要通过eventbus传递,有一部分领域事件,仅仅在领域内发生作用,则不需要通过eventbus,通过MediatR在进程内处理即可
作者回复: 你特别指出是异步,不是async,那说明你期望命令的处理不等待事件处理器的处理,那就需要每个处理器来自己处理异常了,这种情况CAP组件能够很好的处理这种情况
作者回复: 1.是的,领域事件的处理应该专注于一个业务目的,多个影响可以分多个handler。 2.建议尽量使用async await的方式,避免同步异步代码混用。
作者回复: 你的理解是对的,应该定义新用户注册领域事件的优惠券发放handler,来处理优惠券的发放。 集成事件的目的是将事件传播给其它的微服务,它本质上也是为了传递领域事件。 领域事件处理handler一般会组织到以各自聚合根命名的目录下,用以区分。
作者回复: 感谢提醒,努力改进中
作者回复: Event Handler是处理业务副作用的逻辑,本质上与用户发起的命令是一样的,只是它的发起是由事件驱动的,因此与命令处理Handler处于同层。
作者回复: DispatchDomainEventsAsync仅在领域模型持久化保存时触发,这时它会对领域模型里记录的事件进行处理,不会不断地主动扫。