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