轻量级事件驱动插件
内部使用的事件插件, 用于业务解耦以及事件分发。
// 插件配置
// 初始化插件
EventBus plugin = new EventBus();
// 全局开启异步,默认不开启的话即同步阻塞处理
plugin.async(1024, 8);
// 扫描包含有@Listener注解方法的类。2:实现ApplicationEventListener接口
// 设置扫描jar包包括引入的第三方jar包,默认不扫描
plugin.scanJar();
// 设置默认扫描的包命,默认全扫描
plugin.scanPackage("com.github.edagarli.eventbus.listener");
// 启动插件
plugin.start();
// 事件驱动
// 发送第一个消息
plugin.publish("123", new EventSource("test"));
// 发送第二个消息
plugin.publish("123", new EventSource("test111111"));
// 发送带tag的消息
// 事件驱动一对多 发布一个事件触发多个事件处理
// 相同tag 共存多个事件 提供优先级处理 priority的值越小,优先权重越大
plugin.publish("test", new EventSource("123123"));
Awaitility.await().atMost(2, TimeUnit.MINUTES).until(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
return eventBus.stop();
}
});
maven仓库~
<dependency> <groupId>com.github.edagarli</groupId> <artifactId>azeroth-event</artifactId> <version>1.0.0</version> </dependency>
模仿的Spring中的消息事件: 详解Spring事件驱动模型
结合Disruptor异步处理框架: 详情Disruptor异步处理框架