一、简介
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.4 - 2024-08-10
-
✨ mica-mqtt 合入
mica-mqtt-client-solon-plugin
和mica-mqtt-server-solon-plugin
感谢@peigenlpy
-
✨ jfinal 插件重命名为
mica-mqtt-client-jfinal-plugin
和mica-mqtt-server-jfinal-plugin
-
🐛 mica-mqtt-server 修复分组订阅删除,感谢
@tangjj
反馈。
v2.3.3 - 2024-07-22
-
✨ mica-mqtt-server 可停止,同步捐助版。
-
✨ mica-mqtt-server 添加 schedule 系列方法,同步捐助版。
-
✨ mica-mqtt 代码优化 TopicUtil 优化 getTopicFilter 方法。
-
✨ mica-mqtt 优化 AckTimerTask 和 retry 重发日志。gitee #IABQ7L 感谢
@tan90
反馈。 -
✨ mica-mqtt-client-spring-boot-starter 更加方便自定义 MqttClientTemplate。
-
✨ mica-mqtt-client-spring-boot-starter MqttClientTemplate 暴露更多方法,方便使用。
-
✨ mica-mqtt-example 添加 ssl 测试代码
-
🐛 mica-mqtt-client 修复 ssl 服务端重启问题 gitee #IA9FFW #IAEHOD 感谢
@geekerstar
@hangrj
反馈。
v2.3.1 - 2024-06-25
-
✨ mica-mqtt-server 重构心跳,心跳检测模式默认为:最后接收的数据时间。gitee #I9R0SN #IA69SM 感谢
@HY
@tan90
反馈。 -
✨ mica-mqtt-server 优化端口占用的异常提示,方便排查。
-
✨ mica-mqtt client 使用 mica-net 内置的心跳检测,内置心跳已重构。
-
✨ mica-mqtt-client 重连不管服务端是否存在 session 都发送订阅。gitee #I9VIUV 感谢
@xiaochonzi
反馈。 -
✨ 快照版也打 source jar 方便使用。
-
✨ 添加 renovate bot 方便更新依赖和插件版本。
-
✨ 优化 issue.yml 和 github action。
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 支持 stop 停止
在最新的版本中 mica-mqtt-client 和 mica-mqtt-server 均可实现完全停止,可帮助开发者更好的实现插件式开发。
5.2 添加 solon 插件
国产轻量级 solon Java 开发框架,越来越多人使用,2.3.4 版本中合并了 @peigenlpy
同学开发的插件。更好的支持 solon 框架。
使用 solon 集成的 mica-mqtt example 更是可以实现 毫秒级启动,内存占用也非常少,100M内存即可实现上千连接。
六、使用
Spring boot 项目
客户端:
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-client-spring-boot-starter</artifactId> <version>${mica-mqtt.version}</version> </dependency>
配置详见:mica-mqtt-client-spring-boot-starter 使用文档
服务端:
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-server-spring-boot-starter</artifactId> <version>${mica-mqtt.version}</version> </dependency>
配置详见:mica-mqtt-server-spring-boot-starter 使用文档
solon 项目
客户端:
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-client-solon-plugin</artifactId> <version>${mica-mqtt.version}</version> </dependency>
配置详见:mica-mqtt-client-solon-plugin 使用文档
服务端:
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-server-solon-plugin</artifactId> <version>${mica-mqtt.version}</version> </dependency>
配置详见:mica-mqtt-server-solon-plugin 使用文档
JFinal 项目
客户端:
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-client-jfinal-plugin</artifactId> <version>${mica-mqtt.version}</version> </dependency>
配置详见:mica-mqtt-client-jfinal-plugin 使用文档
服务端:
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-server-jfinal-plugin</artifactId> <version>${mica-mqtt.version}</version> </dependency>
配置详见:mica-mqtt-server-jfinal-plugin 使用文档
其他项目
客户端
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-client</artifactId> <version>${mica-mqtt.version}</version> </dependency>
配置详见:mica-mqtt-client 使用文档
服务端
<dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-server</artifactId> <version>${mica-mqtt.version}</version> </dependency>
配置详见:mica-mqtt-server 使用文档
七、文档
-
mqtt科普、mqttx、mica-mqtt的使用视频
-
mica-mqtt 示例、快速开始
-
mica-mqtt 使用常见问题汇总
-
mica-mqtt 发行版本