一、简介
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 越来越好用!!!