当前位置: 移动技术网 > IT编程>开发语言>.net > .NET Core MediatR订阅发布

.NET Core MediatR订阅发布

2020年05月07日  | 移动技术网IT编程  | 我要评论

美树亚由美,机智的监狱生活13,狂蟒之灾txt

前言

上一章主要通过mediatr进行职责分离,本章将通过mediatr使用订阅发布

  • publish 此方法会将消息发布到内存队列,如果有任何订阅者订阅,此消息自行处理业务.

在我们开发中可能会存在一个场景,当我添加完某条数据或者说当我执行完一些操作后我需要进行发个邮件通知或者短信通知等等.

notification

ordercreatedevent
所有的事件都需要继承inotification接口

   public class ordercreatedevent: inotification
    {
        public string userid { get; set; }

        public ordercreatedevent(string orderid)
        {
            this.userid = orderid;
        }
    }

ordercreateddomaineventhandler在这其实可以进行实现广播也就是实现多消费者去订阅.所有消息处理器都需要继承inotificationhandler接口

   public class ordercreateddomaineventhandler :
        inotificationhandler<ordercreatedevent>
    {
        private readonly ilogger _logger;

        public ordercreateddomaineventhandler(ilogger<ordercreateddomaineventhandler> logger)
        {
            _logger = logger;
        }

        public task handle(ordercreatedevent notification, cancellationtoken cancellationtoken)
        {
            _logger.loginformation($"order has found by userid id: {notification.userid} from publisher");
            return task.completedtask;
        }
    }

createordercommandhandler 通过我们的订单处理器创建完订单,通过mediator进行发布消息

    public class createordercommandhandler
        : irequesthandler<createorderrequestmodel, string>
    {
        private readonly imediator _mediator;

        public createordercommandhandler(imediator mediator)
        {
            this._mediator = mediator;
        }

        public async task<string> handle(createorderrequestmodel request, cancellationtoken cancellationtoken)
        {
            //do something...
            await _mediator.publish(new ordercreatedevent(request.userid), cancellationtoken);
            return request.userid;
        }
    }

reference

https://github.com/hueifeng/blogsample/tree/master/src/cqrsmediatr

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网