尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

DamiBus v1.1.0 发布(给单体多模块解耦)

DamiBus v1.1.0 发布(给单体多模块解耦)
📅 发布时间:2026/6/20 10:28:18
DamiBus是一款专为单体多模块通讯解耦设计的工具,结合了Bus与RPC的特点,支持事件分发和接口调用。新版本简化了API,弃用了部分方法并新增了更直观的调用方式。其特点包括事务传导、事件标识、监听者排序等,与EventBus和Api相比耦合度更低。性能测试显示处理千万级事件仅需1秒。适用于模块间解耦场景,不适合分布式消息队列需求。提供总线风格和泛型总线风格两种编程模式。

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);}
}

项目地址

  • https://gitee.com/noear/dami
  • https://github.com/noear/dami

相关新闻

  • Xcode 26 (17A324) 正式版发布 - Apple 平台 IDE
  • macOS Tahoe 26 (25A354) Boot ISO 原版可引导镜像下载
  • macOS Sequoia 15.7 (24G222) 正式版 ISO、IPSW、PKG 下载

最新新闻

  • 大连市今日黄金回收价格多少?本地5家口碑门店报价参考 - 嵩山路大王
  • 2026安徽省蚌埠市电大中专考证升大专必备中专学历最新发布 - cc江江
  • 赣州市黄金回收去哪儿好?整理了5家靠谱实体店地址电话 - 嵩山路大王
  • 2026 哈尔滨首饰回收哪家好 | 5 家正规门店盘点 奢二网高价上榜 - 讯息早知道
  • 终极Windows C盘清理指南:3步彻底解决C盘爆红问题
  • OpenClaw:企业微信合规自动化协议桥接器

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号