• Dami 本地过程调用框架(主打解耦),v0.24 发布


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

    特点

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

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

    与常见的 EventBus、ApiBean 的区别

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

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

    所谓解耦?

    @DamiTopic("event.user")
    public interface EventUserService {
        User getUser(long userId); 
    }
    
    @DamiTopic("event.user")
    public class EventUserServiceImpl { //无耦合实现了 EventUserService 接口
        public User getUser(long userId) {
            return new User(userId);
        }
    }
    
    @EnableAutoConfiguration
    @SpringBootTest(classes = Demo91.class)
    @ComponentScan("features.demo91_springboot")
    public class Demo91 {
        @Autowired
        EventUserService eventUserService;
    
        @Test
        public void main(){
            User user = eventUserService.getUser(99);
            assert user.getUserId() == 99;
        }
    }
    

    本次更新了什么?

    • Payload::reply 增加返回是否成功
    • Dami.api() 的监听者参数数量可与发送者略有不同(比如增加 Payload 参数)

    项目地址

  • 相关阅读:
    mac 本地搭建go-admin
    基于SSM的酒店客房管理系统设计与实现
    solidity 合约转java
    oracle主键自增
    IDEA项目取消git版本管控并添加svn版本控制
    FFmpeg工具使用集
    实现一个 SEO 友好的响应式多语言官网 (Vite-SSG + Vuetify3) 我的踩坑之旅
    k8s集群调度
    获取url后面的参数
    [MATLAB]数值计算
  • 原文地址:https://www.cnblogs.com/noear/p/17702263.html