🔥 DamiBus v1.1.0 发布(给单体多模块解耦)
DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖。
特点
结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用。
- 支持事务传导(同步分发、异常透传)
- 支持事件标识、拦截器(方便跟踪)
- 支持监听者排序、附件传递(多监听时,可相互合作)
- 支持 Bus 和 Api 两种体验风格
与常见的 EventBus、ApiBean 的区别
DamiBus | EventBus | Api | DamiBus 的情况说明 | |
---|---|---|---|---|
广播 | 有 | 有 | 无 | 发送(send) + 监听(listen)
以及 Api 模式 |
应答 | 有 | 无 | 有 | 调用(call) + 监听(listen) + 答复(reply)
以及 Api 模式 |
耦合 | 弱- | 弱+ | 强++ |
如果涉及类加载器隔离:请在主程序标为编译,在其它模块标为可选。
本次更新了什么?
新版本简化了体验!
- 调整 DamiBus:sendAndSubscribe 标为弃用
- 调整 DamiBus:sendAndRequest 标为弃用(由 call 替代)
- 调整 Payload:isSubscribe 标为弃用
- 调整 Payload:isRequest 标为弃用(由 requiredReply 替代)
- 添加 DamiBus:call 方法,意为调用(要求有一个答复)
- 添加 Payload:requiredReply 方法,意为要求答复(或必须答复)
性能测试?
瞬发 1000万个事件,1秒左右可发完(基于 jdk11 测试):
public class SendTest {
static Integer count = 0;
public static void main(String[] args) {
Dami.bus().listen("test.demo", e -> { count = count + 1; });
long start = System.currentTimeMillis();
for (int i = 0; i < 10_000_000; i++) {
Dami.bus().send("test.demo", "1");
}
System.out.println(System.currentTimeMillis() - start + "::" + count);
}
}
疑问: 为什么不用分布式消息队列呢?定位不同(侧重,本地多模块解耦)。
示例
demo21_send
//总线风格。bus()
public class Deom11 {
static String topic = "demo.hello";
public static void main(String[] args) {
//监听事件
Dami.bus().listen(topic, payload -> {
System.err.println(payload); //可以有多个订阅
});
Dami.bus().listen(topic, payload -> {
CompletableFuture.runAsync(()-> { //也可以异步消费
System.err.println(payload);
});
});
//发送事件
Dami.bus().send(topic, "{name:'noear',say:'hello'}");
}
}
demo12_call
//泛型总线风格。<C,R>bus()
public class Demo12 {
static String topic = "demo.hello";
public static void main(String[] args) {
//监听事件
Dami.<String,String>bus().listen(topic, payload -> {
System.err.println(payload);
if (payload.requiredReply()) {
payload.reply("hi!");
}
});
//发送事件 //要求有答复(即,返回值)
String rst1 = Dami.<String,String>bus().call(topic, "world");
//发送事件 //要求有答复(即,返回值) //支持默认值(没有订阅时触发)
//String rst1 = Dami.<String,String>bus().call(topic, "world", ()->"demo");
System.out.println(rst1);
}
}
项目地址

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Bun v1.2.21/22:统一 SQL 客户端、原生 YAML 支持和异步堆栈跟踪
JavaScript 运行时 Bun 近期发布了两个重要版本更新。v1.2.21 版本于 2025 年 8 月 25 日发布,修复了 69 个问题并引入了多项重磅新特性;紧接着 9 月 14 日发布的 v1.2.22 版本则带来了备受期待的异步堆栈跟踪功能,进一步提升了开发体验。 统一 SQL 客户端:一个 API 搞定三大数据库 Bun v1.2.21 最引人注目的新特性是 Bun.SQL —— 一个统一的 SQL 客户端,可以零依赖地连接 MySQL/MariaDB、SQLite 和 PostgreSQL 三种最流行的 SQL 数据库。 MySQL 和 MariaDB 支持 Bun 的 MySQL/MariaDB 驱动使用 Zig 语言编写,性能表现出色。开发者可以通过选项对象或 URL 字符串来建立连接: import { SQL } from "bun"; const sql = new SQL({ adapter: "mysql", hostname: "127.0.0.1", username: "user", password: "password", ...
-
下一篇
🔥无代码流程引擎 FlowLong 飞龙 1.1.17 发布
开源地址:https://gitee.com/aizuda/flowlong 开源地址:https://github.com/aizuda/flowlong 官网文档:https://flowlong.aizuda.com 支持全流程操作监听,仅 8 张表实现整个流程引擎(更符合中国人的思维模式设计),截至当前近 300 家企业自用登记接入使用。300 多家企业包括,国家计算中心,电信 等国企已上车,你还在等什么呢? 开源登记使用名单如下,企业版用户暂不公开 https://gitee.com/aizuda/flowlong/issues/IB5K4V Flowlong 1.1.17 主要亮点 feat: 新增支持节点跳入跳出至触发器 feat: 新增支持嵌套条件路由前置加签 opt: 优化允许发起人撤回审批为草稿状态 opt: 优化增强拿回逻辑错误断言 opt: 优化调整通知查询任务逻辑条件 opt: 优化注释修改更新任务ID通知任务对象获取方式 fixed: 修复 issues/ICW7I7 会签参数历史任务传递 bug 开源版本具备企业版所有功能(除了可视化),企业版可视化部分界...
相关文章
文章评论
共有0条评论来说两句吧...