DamiBus v0.29 发布,本地多模块解耦框架


DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。

特点

结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作异步响应。

  • 支持事务传导(同步分发、异常透传)
  • 支持事件标识、拦截器(方便跟踪)
  • 支持监听者排序、附件传递(多监听时,可相互合作)
  • 支持 Bus 和 Api 两种体验风格

与常见的 EventBus、ApiBean 的区别

  Dami EventBus Api Dami 的情况说明
广播 发送(send) + 监听(listen) 以及 Api 模式
应答 发送并等响应(sendAndResponse) + 监听(listen) + 答复(reply) 以及 Api 模式
回调 有+ 有- 发送并等回调(sendAndCallback) + 监听(listen) + 答复(reply)
耦合 弱- 弱+ 强++  

如果涉及类加载器隔离:请在主程序标为编译,在其它模块标为可选。

本次更新了什么?

  • TopicRouterPatterned 增加排序支持
  • TopicRouterPatterned 分离路由能力,可定制
  • 增加基于 Tag 的路由模式定制
  • 增加 @DamiTopic:index 注解属性
  • dami-springboot-starter,增加 spronboot 2.0 的兼容
  • 修复 dami-springboot-starter 实现类被代理后不能正常注册与注销的问题

新增加的定制效果(详见仓库主页。也可按需定制自己的 Routing):

public class Demo15_path {
public void main(){
//切换为模式匹配路由器 + RoutingPath(支持 * 和 ** 占位符;支持 / 或 . 做为间隔)
DamiConfig.configure(new TopicRouterPatterned(RoutingPath::new));

//拦截
Dami.bus().listen("demo/a/*", (payload) -> {
System.err.println(payload);
});

//发送事件
Dami.bus().send("demo/a/1", "world1");
Dami.bus().send("demo/a/2", "world2");
}
}
public class Demo15_tag {
public void main(){
//切换为模式匹配路由器 + RoutingTag(":"前为主题,后按 "," 号分割作为tag)
DamiConfig.configure(new TopicRouterPatterned(RoutingTag::new));

//拦截
Dami.bus().listen("demo.a:id", (payload) -> {
System.err.println(payload);
});

//发送事件
Dami.bus().send("demo.a:id", "world1");
Dami.bus().send("demo.a:id,name", "world2");
}
}

疑问: 为什么不用分布式消息队列呢?不好意思,真的是不同的维度。

项目地址

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

相關推薦

2023-12-13

DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。 支持事务传导(同步分发、异常透传) 支持

2023-09-23

据技术都能四世同堂,凭什么开发 30 岁就要被干掉? DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用

2023-10-24

OSC 请你来轰趴啦!1028 苏州源创会,一起寻宝 AI 时代 DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订

2023-10-15

DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。 支持事务传导(同步分发、异常透

2023-09-12

元共进|2023 Google 开发者大会精彩演讲回顾 Dami,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作异步

2023-11-14

uter.cn 整合1.2.1各个rc版本改动,总改动如下: feature: 发布全新AGP8插件,构建速度更快,相关使用请查阅《从零接入 TheRouter》 feature: 兼容 ASM 6.x-9.x 版本 feature: 整理编译过程日志输出,减少无用日志 feature: 优化KS

2023-08-28

8 月 26 日「源创会」北京站,聊聊 AI 大模型与底层技术 >>> charts-rs 是纯 rust 实现的图表库,使用简单而且性能高效,生成 svg 低于 10ms,而 png 也低于 50ms。提供简单的方式生成图表,它支持 svg 与 png 两种输

2022-06-07

3.7.0 版本更新详情: build 依赖升级    spring-boot 2.6.8    spring-cloud-dependencies.version>2021.0.2    spring-boot-admin.version>2.6.7    hutool.version>5.8.1    fastjson.version>1.2.83 拆分boot模块为 boot和m

2022-11-08

池实践,美团内部已经有该理论成熟的应用经验 v1.0.9 发布记录 Features 告警类型新增邮件告警渠道,感谢 @林林林 提供实现 adapter 模块新增 grpc 服务端线程池管理 BugFix AbstractDtpNotifier 添加无参构造函数,修复自

2023-01-19

,完善注册发现、配置管理对常用服务的对接,为下一步发布微服务组件做准备。 新特性 将耦合较重的redis组件从主框架中解耦,作为社区组件提供。原有主框架增加redis接口定义,社区组件redis提供具体的接口实现。因此

2024-07-03

count migration)问题。 [优化] 增加基于 Github Action 的自动发布配置 [升级] minio docker 镜像版本升级至 RELEASE.2024-06-29T01-20-47Z 【依赖更新】 [升级] springdoc 版本升级至 2.6.0 [升级] aws-java-sdk-s3 版本升级至 1.12.754 [升级] softw

2023-01-14

库类型支持(中间件不支持) [重大更新] 使用 spring 事件发布机制 重构登录日志与操作日志 支持多事件监听无入侵扩展 例如: 可以增加一个监听者将日志上传至ES等存储 对原有逻辑无影响 依赖升级 update springboot 2.7.6 =

2022-09-30

动态配置常用参数。 通知公告 系统通知公告信息发布维护。 操作日志 系统正常操作日志记录和查询;系统异常信息日志记录和查询。 登录日志 系统登录日志记录查询包含登录异常。 文件管理 系统文

2023-09-07

是对BifroMQ技术架构的整体介绍。请期待我们将在接下来发布的一系列专题文章中,深入探讨BifroMQ的各个组件和设计原则。 最后,为了帮助大家更好地了解BifroMQ的技术架构,我们将于9月21日(周四)举办一场BifroMQ线上直播公开