某一天
小明:你好,你是报刊工作人员吗?
报刊:是的,请问,你有什么需要吗?
小明:我想订阅报刊,关于娱乐、经济、社会类的,其它的我不想要,可以吗?
报刊:可以的,并且你可以随时取消订阅。
小明:好的,谢谢你。祝你工作愉快!
通常该过程我们都是在软件上实现的,但是这并不影响我们要说明的内容。实际项目中,业务是复杂多样的,一个业务可能需要依赖另外一个业务,同时也可能取消和该业务的关联,如果我们不做好处理,各业务耦合度将会大大提高,不利于我们扩展和维护。怎样才能解耦这些依赖关系呢?通过上述小故事,大家是不是想到了什么呢,某个设计模式?没错,我们要使用的就是“发布-订阅”模式,使用该模式,订阅者可以订阅自己需要的东西,并且可以随时取消订阅,在这个过程中,发布者不知道订阅者是谁。
事件总线
Akka系统中,是不是需要我们自己去实现“发布-订阅”模式呢?答案肯定是no,Akka系统提供了一种事件总线(Event Bus)工具,内部实现了发布-订阅,通过使用它,我们就可以实现业务之间的解耦。
事件总线,Akka定义为EventBus类型,拥有发布、订阅、取消订阅等功能。处理过程:发布者将Event发布到EventBus上,订阅者将会接受到需要的消息,通常来讲,订阅者是一个Actor,通过createReceive方法接受消息。处理过程中,Classifier被用来描述事件分类,不同的事件有不同的订阅者,当然一个订阅者可以订阅多个事件,EventBus将会通过Classifier来选择订阅者并向其发送消息。常见的Cla

本文介绍了Akka的事件总线(Event Bus)和事件流(Event Stream),阐述了如何利用它们实现业务解耦。事件总线通过发布-订阅模式,让发布者无需知道订阅者身份,而事件流则允许订阅Actor系统内的各种事件,包括死信。通过示例展示了如何定义、订阅和取消订阅事件,强调了其降低系统耦合度的优势。
最低0.47元/天 解锁文章
786

被折叠的 条评论
为什么被折叠?



