EventBus eventBus = new EventBus(); // 同步 AsyncEventBus asyncEventBus = new AsyncEventBus(Executors.newCachedThreadPool()); // 异步 // 注册订阅者 eventBus.register(new Subscriber()); // 发送事件 eventBus.post(new PaymentEvent(100.0)); 2.3 完整示例 事件定义: public class PaymentEvent ...
}//输出信息event Integer:100event Integer:200event Integer:300event Long:800event Long:800990event Long:800882934LastInteger:300LastLong:800882934 Dead Event: 如果EventBus发送的消息都不是订阅者关心的称之为Dead Event。实例如下: publicclassDeadEventListener {booleannotDelivered =false; @Subscribepublicvoi...
3. 通过eventBus.post()方法发布事件,根据事件类型找到所有对应subcriber,遍历;然后由eventBus中的线程池执行订阅者中入参类型匹配的方法。 简单实用示例: 在springboot中,使用自动注入的方式来实现 目录结构: 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26...
Guava EventBus是Google Guava库提供的一个事件总线(Event Bus)实现,它允许应用程序中的不同组件之间通过事件进行解耦通信。EventBus遵循观察者模式,事件发布者不需要知道哪些组件订阅了事件,而事件订阅者也不需要知道事件是由哪个组件发布的。 2. Guava EventBus如何实现异步事件处理 Guava EventBus通过AsyncEventBus类...
在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于EventBus使用起来简单、便捷,因此,工作中会经常用到。深入理解该框架的原理就很有必要。
EventBus 直译过来就是事件总线,它使用发布订阅模式支持组件之间的通信,不需要显式地注册回调,比观察者模式更灵活,可用于替换Java中传统的事件监听模式,EventBus的作用就是解耦,它不是通用的发布订阅系统,也不能用于进程间通信。可用于Android的EventBus库主要有这几个:Google出品的Guava,Guava是一个庞大的库,EventBus...
方案一:去除EventBus这一层,直接使用主线程消费EventBus使用场景一般在有多个订阅者情况下使用,排查业务逻辑过程中业务逻辑只有一个Subscriber,这种情况没有费用EventBus必要,并且经过验证单线程消费的qps在600/s,发布多个服务也能够满足业务需求。 方案二:去除EventBus,保留多线程,event直接放入线程池中执行方案二是对方...
如果项目中需要使用异步解耦处理一些事项,使用EventBus还是比较方便的。 阅读1.3k发布于2023-02-15 京东云开发者 3.4k声望5.4k粉丝 京东云开发者(Developer of JD Technology)是京东云旗下为AI、云计算、IoT等相关领域开发者提供技术分享交流的平台。 « 上一篇 ...
Guava在guava-libraries中为我们提供了事件总线EventBus库,它是事件发布订阅模式的实现,让我们能在领域驱动设计(DDD)中以事件的弱引用本质对我们的模块和领域边界很好的解耦设计。 不再多的废话,直奔Guava EventBus主题。首先Guava为我们提供了同步事件EventBus和异步实现AsyncEventBus两个事件总线,他们都不是单例的,官...
EventBus原理深度解析 一、问题描述 在工作中,经常会遇见使用异步的方式来发送事件,或者触发另外一个动作:经常用到的框架是MQ(分布式方式通知)。如果是同一个jvm里面通知的话,就可以使用EventBus。由于...监听者。 底层就是将类eventListener中所有注解有Subscribe的方法与其Event对放在一个map中(一个event可以对应多...