通过全局 DataFlowFactory 能够创建消息发布者(IDataPublisher),并能够注入订阅(IDataSubscriber),业务层只需要通过 IDataPublisher,IDataSubscriber 接口交互,公务员遴选和具体消息存储设施脱离。顺着这个思路,当业务需要生产写入消息时,创建发布者,并通过发布者写入消息,并完成订阅者的回调,这个环路即可完成。现在只需要解决两个问题:1. 创建的发布者,如何实现不同场景的扩展。2. 如何完成对应的订阅者(支持同一消息类型,多个订阅者)的回调。
供了 NotifySubscriber 方法,作为已注册消息订阅者的统一触发入口(内部完成了多个订阅者的调度,当然如果针对特殊消费者调用,用户也可以跳过注册订阅者,自由实现订阅处理)。
Object.defineProperty(obj,'age',{enumerable:false }[http://www.gongxuanwang.com](url)/)console.log(Object.keys(obj));
通过上边的整个过程,公务员遴选完全实现了消息中间层的功能,以插件的形式将具体的消息设施在程序的全局入口注入,这样就可以针对不同环境不同业务模块(入口的参数 source_name 控制)做定制化。同时,在大多数的项目中(包括在开发环境中)并无需立即使用独立的消息设施,所以在中间件的内部,提供了一个默认的内存消息队列实现,这样也保证了类库的即引即用,扩展后的图示如下: