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