一、簡介
mica-mqtt 基於 java aio 實作的 簡單 、 低延遲 、 高效能 的 mqtt 物聯網開源元件。 mica-mqtt 更加易於整合到已有服務和二次開發,降低自研物聯網平台開發成本。
二、功能
支持 MQTT v3.1、v3.1.1 以及 v5.0 協定。
支持 websocket mqtt 子協定(支持 mqtt.js)。
支持 http rest api,http api 文件詳見。
支持 MQTT client 客戶端。
支持 MQTT server 伺服端。
支持 MQTT 遺囑訊息。
支持 MQTT 保留訊息。
支持自訂訊息(mq)處理轉發實作集群。
MQTT 客戶端 阿裏雲、華為雲 mqtt 連線 demo。
支持 GraalVM 編譯成本機可執行程式。
支持 Spring boot 計畫快速接入(mica-mqtt-spring-boot-starter)。
mica-mqtt-spring-boot-starter 支持對接 Prometheus + Grafana。
基於 redis pub/sub 實作集群,詳見 mica-mqtt-broker 模組。
三、使用場景
物聯網(雲端 mqtt broker)
物聯網(邊緣端訊息通訊)
群組類 IM
訊息推播
簡單、易用的 mqtt client 客戶端
四、更新記錄
v2.2.10 - 2024-02-23
✨ mica-mqtt-client 最佳化 client publish 時還沒有認證的情況。
✨ mica-mqtt-client-spring-boot-starter 最佳化註解訂閱,支持 clean session false 重新開機接收訊息。
v2.2.9 - 2024-02-25
✨ mica-mqtt-server 攔截器 IMqttMessageInterceptor 添加 onAfterConnected 方法,方便在連線時做黑名單等功能。
✨ mica-mqtt-client 添加私服版客戶端全域訂閱功能和添加使用文件。
💥 mica-mqtt-common 刪除棄用的 ThreadUtil 。
v2.2.8 - 2024-01-19
✨ jfinal-mica-mqtt-client 啟動改為同步連線。
🐛 mica-mqtt-client 修復
isConnected
判斷。
2.2.7
中存在此問題。
⬆️ 依賴升級
v2.2.7 - 2024-01-03
✨ mica-mqtt-server mqttws開啟了ssl後,使用mqtt.js去連線,多重新整理幾次就會超時 gitee #I8LCMY
✨ mica-mqtt-example 最佳化 graalvm 配置,感謝 github
@litongjava
反饋
v2.2.6 - 2023-11-26
✨ mica-mqtt-server 添加
webConfigCustomize
支持自訂 http 和 ws 配置,可用於 gitee #I8HF7P
✨ mica-mqtt-client 添加連線測試功能
connectTest()
gitee #I8J35M 感謝
@彭蕾
反饋
✨ mica-mqtt-example 更新 graalvm 配置
五、mqtt連線測試
在 mica-mqtt-client 2.2.6 中我們添加了 mqtt 連線測試,可以很方便的判斷 mqtt 連線和帳號密碼是否可用。
MqttConnectReasonCode reasonCode = MqttClient.create()
.ip("mqtt.dreamlu.net")
.port(1883)
.username("mica")
.password("mica1")
.connectTest();
System.out.println(reasonCode);
六、保留session最佳化
在 mica-mqtt-client-spring-boot-starter 2.2.10 中如果你采用註解訂閱,如下:
@MqttClientSubscribe("/test/#")
publicvoidsubQos0(String topic, byte[] payload){
logger.info("topic:{} payload:{}", topic, new String(payload, StandardCharsets.UTF_8));
}
在客戶端配置保留 session,客戶端所在服務重新開機後能接受到這段時間的離線訊息。當然需要 mqtt 伺服端的支持,例如 emqx 需註意 emqx 預設的 session 保留時間是2小時。
六、感謝
最後感謝大家的支持,很多朋友反饋了很多問題和需求,也使得 mica-mqtt 越來越好用!!!