Guava EventBus(事件总线)

EventBus是Guava的事件处理机制,是设计模式中观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus使用非常简单便捷。

0.1、Guava EventBus概念:

Google guava 和 Apache commons类似,都是对java语言和类库进行增强的一个扩展库。guava是谷歌的java工程师们从日常的工作中提取出的很多高效率的方法集合。

Google guava 类库中有一个事件总线组件(EventBus),它提供的消息发布-订阅类库实现了观察者设计模式可以方便的将业务代码方便的解耦。

比如我们可以通过EventBus可以快速的在建立一个进程内消息队列的方案。
因为EventBus是维护在内存中的一个消息队列,所以不支持跨进程使用。

当然,如果你需要的是一个跨进程、分布式的消息队列应该直接采用中间件(RabbitMQ、kafka等)

0.2、EventBus 相关的术语:

EventBus 解释 备注
事件(消息) 向事件总线发布的对象 通常是一个类,不同的消息事件用不同的类来代替,消息内容就是类里面的属性
订阅 向事件总线注册监听者以接受事件的行为 EventBus.register(Object),参数就是监听者
监听者 提供一个处理方法,希望接受和处理事件的对象 通常也是一个类,里面有消息的处理方法
处理方法 监听者提供的公共方法,事件总线使用该方法向监听者发送事件;该方法应该用Subscribe注解 监听者里面添加了Subscribe注解的方法,就可以认为是消息的处理方法
发布消息 通过事件总线向所有匹配的监听者提供事件 EventBus.post(Object)

0.3、创建事件总线流程

创建一个新的事件总线的处理流程类为:

1、选择或者创建一个事件消息类

2、创建一个事件监听类

3、如果需要使用异步事件总线,则需要创建一个Executor对象(如:线程池)

4、新建一个事件处理总线(EventBus、AsyncEventBus)

5、注册事件监听者

6、发送事件消息

7、接收事件并处理

1、EventBus的简单使用

public class EventBus {
   
    /**
     * 创建EventBus对象, identifier为“default”
     */
    public EventBus() {
   
        this("default");
    }

    /**
     * 创建EventBus对象, identifier就是用一个字符串来标识EventBus
     */
    public EventBus(String identifier);

    /**
     * 创建EventBus对象,exceptionHandler是异常处理类(消息处理过程中有异常,统一处理)
     * ps: identifier为“default”
     */
    public

你可能感兴趣的:(Java,java,Guava,EventBus)