<xmp id="63nn9"><video id="63nn9"></video></xmp>

<xmp id="63nn9"></xmp>

<wbr id="63nn9"><ins id="63nn9"></ins></wbr>

<wbr id="63nn9"></wbr><video id="63nn9"><ins id="63nn9"><table id="63nn9"></table></ins></video>

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 參數)

項目地址

posted @ 2023-09-14 13:10  帶刺的坐椅  閱讀(41)  評論(0編輯  收藏  舉報
人碰人摸人爱免费视频播放

<xmp id="63nn9"><video id="63nn9"></video></xmp>

<xmp id="63nn9"></xmp>

<wbr id="63nn9"><ins id="63nn9"></ins></wbr>

<wbr id="63nn9"></wbr><video id="63nn9"><ins id="63nn9"><table id="63nn9"></table></ins></video>