轻量级事件驱动插件
内部使用的事件插件, 用于业务解耦以及事件分发。
// 插件配置 // 初始化插件 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异步处理框架