一、简介
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 已完成了大部分功能,目前已在打磨细节阶段。有需要的老板可以提前关注哦。