🔥 FolkMQ v1.5.1 釋出(“新式” 國產訊息中介軟體)

带刺的坐椅發表於2024-05-28

FolkMQ 是個“新式”的訊息中介軟體。強調:“小而巧”、“簡而強”。

功能簡表

角色 功能
生產者(客戶端) 釋出普通訊息、Qos0訊息、定時訊息、順序訊息、可過期訊息、事務訊息、廣播訊息
消費者(客戶端) 訂閱、取消訂閱。消費-ACK(自動、手動)
服務端 釋出-Confirm、訂閱-Confirm、取消訂閱-Confirm、派發-Retry、派發-Delayed

客戶端語言支援

Java、Python、JavaScript(支援 node.js 後端,web 前端)

傳輸協議支援

tcp、udp、websocket、kcp

部署支援

可內嵌(依賴包為 200Kb+),可單機,可叢集(部署包為 10Mb)。

本次更新

  • 新增 廣播訊息(給生產者新增廣播模式)
  • 新增 控制檯“強制清空”訊息的操作
  • 新增 "fokmq:ws" 適配 websocket 子協議驗證(避免亂連)
  • 新增 "server-broker" 控制檯的叢集節點皮膚新增“記憶體用率”檢視
  • 最佳化 非同步訊息生產端的記憶體控制
  • 最佳化 客戶端鎖處理,預設無鎖改為順序鎖
  • sokcet.d 升為 2.5.1

面向簡單程式設計

1) 啟動服務

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

2) 編寫程式

  • 引入一個小依賴
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>folkmq-transport-netty</artifactId>
    <version>1.5.1</version>
</dependency>
  • 寫程式嘍
public class ClientDemo {
    public static void main(String[] args) throws Exception {
        //建立客戶端,並連線
        MqClient client = FolkMQ.createClient("folkmq://127.0.0.1:18602")
                                .nameAs("demoapp")
                                .connect();

        //訂閱主題
        client.subscribe("demo.topic", message -> {
            System.out.println(message);
        });

        //釋出普通訊息
        client.publish("demo.topic", new MqMessage("helloworld!"));
        //釋出Qos0訊息
        client.publish("demo.topic", new MqMessage("helloworld!").qos(0));
        //釋出順序訊息
        client.publish("demo.topic", new MqMessage("helloworld!").sequence(true));
        //釋出廣播訊息
        client.publish("demo.topic", new MqMessage("helloworld!").broadcast(true));
        //釋出定時訊息(或延時訊息)
        client.publish("demo.topic", new MqMessage("helloworld!").scheduled(Datetime.Now().addDay(10)));
        //......等
    }
}

程式碼倉庫

  • https://gitee.com/noear/folkmq
  • https://github.com/noear/folkmq

官網

  • https://folkmq.noear.org

相關文章