DDD之实现领域事件(MediatR)

DDD之实现领域事件(MediatR)

领域事件:在同一个微服务内的聚合之间的事件传递。使用进程内的通信机制完成。

(1)C#的事件机制

var eventClass = new EventClass();

eventClass .事件+=eventClass_事件

eventClass.StartProcess();

缺点:需要显式地注册。

(2)MediatR

进程内消息传递的开源库MediatR。事件的发布和事件的处理之间解耦。MediatR中支持“一个发布者对应一个处理者”和“一个发布者对应多个处理者”这两种模式

  • 安装 Install-Package MediatR.Extensions.Microsoft.DependencyInjection

image-20220319160713907

  • AddMediatR

image-20220319160731829

  • 定义一个在消息的发布者和处理者之间进行数据传递的类,这个类需要实现INotification接口。一般用record类型。

image-20220319160910490

  • 消息的处理者要实现NotificationHandler接口,其中的泛型参数TNotification代表此消息处理者要处理的消息类型。

    image-20220319161007069

  • 在需要发布消息的的类中注入IMediator类型的服务,然后我们调用Publish方法来发布消息。Send()方法是用来发布一对一消息的,而Publish()方法是用来发布一对多消息的。

image-20220319161133694

  • 测试

image-20220319161150458

posted @ 2022-04-08 17:29  peng_boke  阅读(356)  评论(0编辑  收藏  举报