
Guava发布订阅组件EventBus
前言
Guava是一个谷歌开发的开源库。Guava工程中包含了很多被Google的 Java项目广泛依赖的核心库。
本文主要介绍Guava中的EventBus组件。
EventBus
Eventbus
是一种机制,它允许不同的组件在不了解彼此的情况下相互通信。组件可以将Event
发送到Eventbus
,而不知道谁将接收它,或者有多少其他组件将接收它。组件还可以监听Eventbus
上的事件,而不知道是谁发送了事件。这样,组件就可以在不依赖彼此的情况下进行通信。另外,替换一个组件也很容易。只要新组件理解正在发送和接收的Events
,其他组件就永远不会知道。
引入依赖
快速使用
创建EventBus
使用Eventbus
时,首先,为了注册监听器和发布事件,你需要一个总线:
创建监听器
然后需要创建一个监听器,用于订阅EventBus
上的事件。
注册监听器并发布事件
可以看到,处理程序方法使用@Subscribe
注解;现在Listener
应该被添加到Eventbus
和发布事件。下面是一个简单的例子:
实际案例
是不是很简单!我们可以通过EventBus
解决一些实际场景中的问题,在单个JVM中进行异步处理。比如在一些交易系统中,在付款成功以后,需要将结果通知给付款方,同时也要通知收款方。
在这个例子中,我们需要两个监听器,一个用于发送付款成功的消息给用户,一个用于发送消息给收款方。
首先有一个用于表示交易的类。
然后建立两个监听器,用于监听交易完成的事件,并作出响应。
有了事件的订阅方之后,我们建立EventBus
,并将监听器注册在EventBus
上,然后将Event
发布。
我们执行测试用例后,结果如下:
可以看出,我们并不用显式的去调用SendPaymentListener
和SendReceiveListener
的方法,EventBus
内部便可以替我们完成事件的发布。
小结
Guava EventBus
的内容比较简单,所以上面内容也写的很简单,你可以动手试试,体验一下Guava
的发布订阅模式。如果对你有所帮助,点个赞就是对我最大的鼓励!
