当前位置: 欣欣网 > 码农

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