EventBus In eShop

  • 时间:
  • 浏览:2
  • 来源:彩神幸运飞艇_神彩幸运飞艇官方

微软在Demo中把其提取出了接口,把要是 常用土办法 给提炼了出来,要是 核心还是Dictionary<string, List<Delegate>>, 使用Dictionary进行Map映射。通过Subscribe和UnSubscribe进行订阅和撤销,使用Publish土办法 进行发布操作。

1、EventBus能要能很好的解耦订阅者和发布者之间的依赖

每个月到下旬就会比较忙,什么都文章发布会真难,但我也会坚持学习完eShop的,为了学习,我建了个群,朋友能要能进来同時 学习,有哪几种建议和疑问都能要能进来哦。

朋友看得人在订阅的要是,EventBus会检查下在Map中与非 有相应的注册,原因分析分析分析着没有的话首先回去RabbitMQ中创建另一有一个新的channel进行绑定,要是 在Map中进行注册映射。

今天说下EventBus,前几天园里的大神原因分析分析分析着把其解刨,我今天就借着大神的肩膀,分析下在eShop项目中EventBus的实现。

在ProcessEvent土办法 中,回去Map中找寻subscribers,要是 通过动态反射进行执行:

微软通过简单的代码解耦了Publisher和Subscribers之间的依赖关系,朋友引用大神的总结:

在catalog.api中,微软突然老出了EventBus,我在上一篇中也提到了,这是我的另一有一个疑惑,原因分析分析分析着在catalog中并没有订阅操作,直接执行了Publish操作,另另一有一个以为是另一有一个空操作,要是 看得人Basket.Api我才知道为什么在么在微软要用RabbitMQ。

在你你这俩土办法 里,朋友看得人了Subscribe操作,想想要是的提问不得劲搞笑,不过研究明白了要是错,对吧!

UnSubscribe则直接从Map中撤销映射,通过OnEventRemoved事件判断Map下此映射的subscriber与非 为空,为空则从RabbitMQ中关闭channel。

今天朋友看得人EventBus在Demo中的应用,总结一下。

朋友知道使用EventBus是为了解除Publisher和Subscriber之间的依赖性,另另一有一个朋友的Publisher就不时要知道有十几个 Subscribers,只时要通过EventBus进行注册管理就好了,在eShop项目中,有另一有一个另另一有一个的接口IEventBus(eShopOnContainers\src\BuildingBlocks\EventBus\EventBus\Abstractions)

2、使用RabbitMQ要能跨项目、跨平台、跨语言的解耦订阅者和发布者

最近发觉转发文章不写出处的,特此加进去去链接:http://inday.cnblogs.com

其实在Demo中朋友看得人对订阅者的管理是通过Dictionary内存的土办法 ,什么都朋友的Subscribe仅仅只在Basket.Api中看得人,但微软是通过IEventBusSubscriptionsManager接口定义的,朋友能要能通要是来 人的需求来进行定制,能要能做成分布式的,比如使用memcached。

QQ群:376245054

朋友能要能看得人你你这俩接口定义了EventBus所需的要是 操作, 对比大神的EventBus,相关功能都不 一致的,朋友看下它的实现类:EventBusRabbitMQ,从名字可以要能看出,这是另一有一个通过RabbitMQ来进行管理的EventBus,朋友能要能看得人它使用了IEventBusSubscriptionsManager进行订阅存储,也要是大神文中的:

使用RabbitMQ,朋友不仅是从类之间的解耦,更能要能跨项目,跨语言,跨平台的解耦,publisher仅仅时要把消息体(IntegrationEvent)传送到RabbitMQ,Consumer从Queue中获撤销息体,要是 推送到Subscribers执行相应的操作。朋友看下Basket.Api.Startup.cs:

eShop虽好,但不建议朋友倒入生产环境,毕竟是另一有一个Demo,要是 目前还是ALPHA版本,用来学习是另一有一个很好的教材,这要是另一有一个大杂烩,学习中让你学到什么都新的东西,朋友原因分析分析分析着看好core的发展,能要能同時 研究下。

在RabbitMQ的构造土办法 中,朋友看得人另另一有一个另一有一个创建:CreateConsumerChannel(),这里创建了另一有一个EventingBasicConsumer,当Queue含有新的消息完会通过ProcessEvent执行Map中注册的handler(subscribers),看图原因分析分析分析着更清晰些:

朋友好像对分析源码厌倦了,说其实我也会厌倦,不过不看是无法分析其上边的东西,从易到难是另一有一个必要的过程。