?? DamiBus v0.54 發布,1000 萬發事件/秒

來源: 投稿
2023-10-23 13:40:00

DamiBus,專為本地多模塊之間通訊解耦而設計(尤其是未知模塊、隔離模塊、領域模塊)。零依賴。

特點

結合 Bus 與 RPC 的概念,可作事件分發,可作接口調用,可作響應訂閱。

  • 支持事務傳導(同步分發、異常透傳)
  • 支持事件標識、攔截器(方便跟蹤)
  • 支持監聽者排序、附件傳遞(多監聽時,可相互合作)
  • 支持 Bus 和 Api 兩種體驗風格

與常見的 EventBus、ApiBean 的區別

  DamiBus EventBus Api DamiBus 的情況說明
廣播 發送(send) + 監聽(listen)
以及 Api 模式
應答 發送并請求(sendAndRequest) + 監聽(listen) + 答復(reply)
以及 Api 模式
回調 有+ 有- 發送并訂閱(sendAndSubscribe) + 監聽(listen) + 答復(reply)
耦合 弱- 弱+ 強++  

如果涉及類加載器隔離:請在主程序標為編譯,在其它模塊標為可選。

本次更新了什么?

  • 修復 TopicDispatcherDefault::dispatch MDC 添加后沒有移除的問題
  • 添加 DamiBus::unlisten 取消主題的所有監聽
  • 添加 IdGenerator 接口(支持自定義id生成)
  • 調整 Payload::getGuid 更名為 getPlid
  • 調整 MDC(dami-guid)更名為 dami-plid

更換新的 id 生成方案后,1000萬個事件1秒左右可發完:

public class SendTest {
    public static void main(String[] args) {
        Dami.bus().listen("test.demo", e -> { });

        long start = System.currentTimeMillis();
        for (int i = 1; i < 10000000; i++) {
            Dami.bus().send("test.demo", "1");
        }
        System.out.println(System.currentTimeMillis() - start);
    }
}

疑問: 為什么不用分布式消息隊列呢?不好意思,真的是不同的維度事兒。

項目地址

展開閱讀全文
點擊加入討論??(4) 發布并加入討論??
4 評論
8 收藏
分享
返回頂部
頂部
一本久久综合亚洲鲁鲁五月天,无翼乌口工全彩无遮挡H全彩,英语老师解开裙子坐我腿中间