Guava事件总线(EventBus)是Google Guava库中的一个组件,它实现了发布-订阅模式的事件总线机制。事件总线允许服务内部的组件之间进行松散的发布-订阅式通信,从而实现了组件间的解耦。通过事件总线,组件可以在不直接相互引用的情况下进行通信,提高了系统的可扩展性和可维护性。 2. Guava事件总线的工作原理 Guava事件总线...
1、eventbus是基于注册监听的方式来运行的,因此,首先需要将eventbus,然后才会有事件及监听者。新建eventbus或者AsyncEventBus的方式如下: 或者 2、注册监听者。 底层就是将类eventListener中所有注解有Subscribe的方法与其Event对放在一个map中(一个event可以对应多个Subscribe的方法)。实现如下: 3、事件发送:执行指定事...
EventBus中发布事件是针对各个方法的,我们将一个事件对应的类型信息和方法信息等都维护在一个对象中,在EventBus中就是观察者Subscriber. 然后,通过事件类型映射到观察者列表,当发布事件的时候,只要根据事件类型到列表中寻找所有的观察者并触发监听方法即可。 在SubscriberRegistry中通过如下数据结构来完成这一映射: private...
/*** Creates a new EventBus with the given {@codeidentifier}.**@paramidentifier a brief name for this bus, for logging purposes. Should be a valid Java* identifier.*/publicEventBus(String identifier){this(identifier,//eventbus的一个简要名字MoreExecutors.directExecutor(),//创建执行器Dispatcher...
1、EventBus的核心对象包含EventBus对象、观察者对象Observer、事件对象Event。 2、观察者对象通过注解@Subscribe来定义处理事件的逻辑实现方法,该方法的参数定义了事件类型。 3、通过EventBus的register方法实现观察者Objserver和EventBus的关联。 4、通过EventBus的post方法实现事件Event的分发。
意思是说EventBus分发事件(Event)给listeners处理,并且提供listeners注册自己的方法。从这里我们可以看出EventBus主要是一个调度的角色。 **EventBus总结** - 1.同步执行,事件发送方在发出事件之后,会等待所有的事件消费方执行完毕后,才会回来继续执行自己后面的代码。
观察者模式(Observer)用于解决上述问题,EventBus就是该模式的一个实现,它是Google Guava提供的一个组件。 EventBus使用“发布—订阅”的通信模式,使得系统(进程)内各个组件之间无需相互显式引用即可完成事件分发或消息通信,如下图所求: 它的设计结构非常符合观察者模式, ...
Guava在guava-libraries中为我们提供了事件总线EventBus库,它是事件发布订阅模式的实现,让我们能在领域驱动设计(DDD)中以事件的弱引用本质对我们的模块和领域边界很好的解耦设计。 不再多的废话,直奔Guava EventBus主题。首先Guava为我们提供了同步事件EventBus和异步实现AsyncEventBus两个事件总线,他们都不是单例的,官...
publicstaticvoidmain(String[]args){// 1.构造一个事件总线EventBus eventBus=newEventBus("test");// 2.构造一个事件监听器EventListener listener=newEventListener();// 3.把事件监听器注册到事件总线上eventBus.register(listener);// 4.事件总线发布事件,触发监听器方法eventBus.post(newTestEvent1(1))...