FolkMQ 作個簡單的消息中間件(最簡單的那種), v1.3.1 發佈

功能簡介

角色 功能
生產端(或發起端) 發佈消息、定時消息(或叫延時)、順序消息、可過期消息、事務消息。發送消息(rpc)
支持 Qos0、Qos1
消費端(或接收端) 訂閱、取消訂閱。消費-ACK(自動、手動)。監聽(rpc)
服務端 發佈-Confirm、訂閱-Confirm、取消訂閱-Confirm、派發-Retry、派發-Delayed
服務端 單線程、內存運行、快照持久化(自動、停機、手動)、Broker 模式集羣、集羣熱擴展

中間件特點

  • 高吞吐量、低延遲

集羣模式每秒能處理百萬消息,最低延遲不到1毫秒。

  • 可擴展性

集羣模式支持服務節點熱擴展。流量高時隨時加,流量低時可減。視頻:

消息被快照持久化(類似於 redis)到本地磁盤,並且支持數據備份防止數據丟失

  • 可集羣、高可用

可單機,可集羣。集羣內任何節點壞掉只要還有“一個”同類節點,仍可提供服務。視頻:

本次更新

  • 新增 javascript 語言客戶端實現
  • 調整 docker 基礎鏡像改爲:adoptopenjdk/openjdk11-openj9 (內存可省一半)
  • 調整 folkmq-broker 更名爲:folkmq-server-broker (相互兼容,體驗不變)
  • 添加 folkmq-server 對 ws 輸傳協議的支持
  • 添加 rpc 異常傳導機制
  • 完善 順序消息的消費邏輯(改爲串行消費),更適合數據庫有序同步之類的場景
  • 完善 許可證本地處理機制(基於rsa簽名機制)

啓動服務:

docker run -p 18602:18602 -p 8602:8602 noearorg/folkmq-server:1.3.1

新功能示例(for Js or Node.js Demo):

const {FolkMQ} = require("@noear/folkmq");

async function main() {
    //創建客戶端,並連接
    const client = await FolkMQ.createClient("folkmq:ws://127.0.0.1:18602")
                            .nameAs("demoapp")
                            .connect();

    //訂閱主題,並指定加入的消費者分組
    client.subscribe("demo", null, true, message => {
        console.log(message);
    });

    //發佈消息
    client.publish("demo", FolkMQ.newMqMessage("helloworld!"));
}

main();

代碼倉庫

官網

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章