一、簡介
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.3.0 - 2024-05-26
✨ mica-mqtt 最佳化 MqttQoS 列舉,改為 MqttQoS.QOS0,方便使用(不相容)。
✨ mica-mqtt-client 同步私服部份功能,支持 stop 完全停止。
✨ mica-mqtt-client 同步私服部份功能,MqttClient 都添加了 schedule、scheduleOnce 方法,( 耗時任務,請務必自訂執行緒池 )
✨ mica-mqtt-server 最佳化裝置離線,簡化程式碼。
✨ mica-mqtt-server 使用者繫結使用 tio 內建 Tio.bindUser(context, username)。
🐛 mica-mqtt-client-spring-boot-starter 修復
@MqttClientSubscribe
型別錯誤時的異常提示。
🐛 mica-mqtt-client 修復重連可能失敗的問題 gitee #I9RI8E 感謝
@YYGuo
反饋。
五、更新說明
5.1 mqtt-client stop 停止
之前有好幾個朋友咨詢到 client 停止的問題,在 2.3.0 中同步了下私服版的程式碼,將心跳執行緒改為了時間輪的方式。也支持了 stop,可以在更多場景中使用。
5.2 mqtt-client schedule
MqttClient client = MqttClient.create()
.ip("127.0.0.1")
.port(1883)
.username("mica")
.password("mica")
.connectSync();
// 使用 schedule 定時
client.schedule(() -> {
client.publish("/test/client", "mica最牛皮".getBytes(StandardCharsets.UTF_8));
}, 2000);
5.3 mqtt-server username 繫結
mica-mqtt 2.3.0 中改為使用
Tio.bindUser(context, username)
繫結連線 username ,如需獲取連線 username 可以使用
context.getUserId()
獲取。
獲取 username 的連線集合
Set<ChannelContext> usernameSet = Tio.getByUserid(context.tioConfig, "username");
六、BladeX Links 預熱
感謝翼神采用 mica-mqtt 作為 Bladex-Links 物聯平台基石!BladeX Links 已完成了大部份功能,目前已在打磨細節階段。有需要的老板可以提前關註哦。