介绍
一个内存级别的异步事件总线服务,实现了简单的生产-消费者模式;
EventBus是Guava框架对观察者模式的一种实现,使用EventBus可以很简洁的实现事件注册监听和消费。
使用场景:
- MPUSH中各事件的发布、订阅;
- Elastic-Job任务执行和任务轨迹记录
new EventBus();
new AsyncEventBus();
- post(new xxxEvent()) 发布事件
- register(this) 注册、订阅事件
@Subscribe
@AllowConcurrentEvents - unregister(this) 取消订阅
第一步:哪个类需要订阅,首先的注册,然后订阅
1 | // 注册 |
第二步:发布事件
1 | EventBus.post(new UserOnlineEvent(message.getConnection(), message.userId)); |
参考:https://blog.csdn.net/fanhenghui/article/details/51459273
MPUSH源码实现
MPushClient.java 创建EventBus
1 | public MPushClient() { |
EventBus.java
1 | package com.mpush.tools.event; |
EventConsumer.java 父类中注册,子类中可以订阅事件
1 | package com.mpush.tools.event; |
1 | public final class LocalRouterManager extends EventConsumer implements RouterManager<LocalRouter> { |
功能组件文章目录:
v1.5.2