🔥 DamiBus v0.51 发布
DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块、隔离模块、领域模块)。零依赖,特适合 DDD。
特点
结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅。
- 支持事务传导(同步分发、异常透传)
- 支持事件标识、拦截器(方便跟踪)
- 支持监听者排序、附件传递(多监听时,可相互合作)
- 支持 Bus 和 Api 两种体验风格
与常见的 EventBus、ApiBean 的区别
DamiBus | EventBus | Api | DamiBus 的情况说明 | |
---|---|---|---|---|
广播 | 有 | 有 | 无 | 发送(send) + 监听(listen) 以及 Api 模式 |
应答 | 有 | 无 | 有 | 发送并请求(sendAndRequest) + 监听(listen) + 答复(reply) 以及 Api 模式 |
回调 | 有+ | 无 | 有- | 发送并订阅(sendAndSubscribe) + 监听(listen) + 答复(reply) |
耦合 | 弱- | 弱+ | 强++ |
如果涉及类加载器隔离:请在主程序标为编译,在其它模块标为可选。
本次更新了什么?
- 删除 Dami::intercept 接口,直接使用 Dami.bus()::intercept
- 更名 sendAndResponse 为 sendAndRequest!!!
- 更名 sendAndCallback 为 sendAndSubscribe!!!
- 添加 TopicDispatcher,将调度处理与路由器开发(更方便添加监控)
- 添加 InterceptorChain::getTargets 接口(可以知道有哪些订阅)
- 添加 Acceptor::isSingle 接口,用于识别单发还是多发接收
- 添加 Payload::isSubscribe 接口,用于识别订阅
- 调整 启用新的配置方式(配置路由时,不需要重新实例化总线)
- 调整 接口默认方法处理策略(有订阅执行订阅,无订阅者执行默认)
- 调整 createSender 调整类加载器的主体
- 调整 send,sendAndSubscribe 返回类型改为 bool(马上可以知道是否有订阅目标)
新增加的监视效果,基于拦截器:
public class Demo16_intercept { @Test public void main() throws Exception { Dami.bus().intercept((payload, chain) -> { System.out.println("开始监视..."); if (chain.getTargets().size() == 0) { System.out.println("没有订阅..."); } else { chain.getTargets().forEach(e -> System.out.println(e.getListener())); chain.doIntercept(payload); } System.out.println("结速监视..."); }); //发送事件 Dami.bus().send("demo.hello", "world"); } }
另一个方案是用重载调度器的方法:
public class Demo16_dispatcher { @Test public void main() throws Exception { DamiConfig.configure(new TopicDispatcherMonitor()); Dami.bus().send("demo.hello", "world"); } } public class TopicDispatcherMonitor<C,R> extends TopicDispatcherDefault<C,R> { @Override protected void doDispatch(Payload<C, R> payload, List<TopicListenerHolder<C, R>> targets) throws Throwable { //开始监视... System.out.println("开始监视..."); //用 i,可以避免遍历时添加监听的异常 for (int i = 0; i < targets.size(); i++) { TopicListener<Payload<C,R>> listener = targets.get(i).getListener(); //发送前监视... System.out.println("发送前监视..."); listener.onEvent(payload); //发送后监视... System.out.println("发送后监视..."); } //结速监视... System.out.println("结速监视..."); } }
疑问: 为什么不用分布式消息队列呢?不好意思,真的是不同的维度事儿。
项目地址
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache Doris 2.0.2 版本正式发布!
亲爱的社区小伙伴们,Apache Doris 2.0.2 版本已于 2023 年 10 月 6 日正式发布,该版本对多个功能进行了更新优化,旨在更好地满足用户的需求。有 92 位贡献者为 Apache Doris 2.0.2 版本提交了功能优化项以及问题修复,进一步提升了系统的稳定性和性能,欢迎大家下载体验。 GitHub下载: https://github.com/apache/doris/releases/tag/2.0.2-rc05 官网下载页: https://doris.apache.org/download/ 重要更新 删除与 lambda 函数语法冲突的 json“->”运算符,可以使用函数 json_extract 代替。#24679 将metadata_failure_recovery从 fe.conf 移动到 start_fe.sh 参数,以避免异常操作。#24308 对于普通类型中的 null 值使用 \n 来表示,对于复杂类型或嵌套类型的 null 值,跟 JSON 类型保持一致、采取 null 来表示。#24207 优化 BE 节点 priority_n...
- 下一篇
IntelliJ IDEA 辅助插件 jutils 2.0.4 发布
更新内容: 打包编译文件之前,默认自动编译选定的文件 定位打开文件夹(windows) 支持生成自动Settter方法 外部编辑器打开 打包编译输出字节码文件(可以制作升级包补丁) 添加选中文件进行打包(包含目录,不包含目录) https://plugins.jetbrains.com/plugin/12758-jutils
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装Docker,最新的服务器搭配容器使用
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长