要实践这个InMemoryEventBus,那么还需要 一个,IntegrationEvent的子类和一个IIntegrationEventHandler<T>的实现类,这些都不难,例如我们做一个添加用户的事件,A在添加用户后,发起一个事件并将新用户的名字作为事件数据,B去订阅事件,并在自己的处理器中处理名字信息。
思路是这样的:
写一个 AddUserEvent:IntegrationEvent,里面有一个UserId和一个UserName。
写一个AddUserEventHandler:IIntegrationEventHandler<AddUserEvent>,在Handle方法中输出UserId和Name到日志。
注册DI,你要注册下面这些服务:
IEventBus=>InMemoryEventBus ISubscriptionsManager=>InMemorySubscriptionsManager AddUserEventHandler=>AddUserEventHandler在Startup中为刚刚写的时间和处理器添加订阅(在这里已经可以获取到IEventBus实例了)
写一个Api接口或是什么,调用IEventBus的Publish方法,new 一个新的AddUserEvent穿进去。
OK!到这里一个切实可用的InMemoryEventBus就可以使用了。