當前位置: 妍妍網 > 碼農

mica-mqtt 2.2.10 釋出,超好用的 java mqtt

2024-04-01碼農

一、簡介

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 越來越好用!!!