mica-mqtt 2.4.5 发布,MqttClientSubscribe 支持自定义序列化
一、前言
Dromara mica-mqtt 2.4.5 正式版已经发布,请注意从 2.4.x 版本开始将 maven groupId 迁移到了 org.dromara.mica-mqtt,包名切换到了 org.dromara,其它使用上均和老版本保持一致。强烈推荐 大家尽快升级到新的 2.4.x。
另由于老的文档散落在各个模块,不方便查看,我们新增了文档站:https://mica-mqtt.dromara.org
二、更新记录
v2.4.5 - 2025-05-06
- ✨mica-mqtt-client-spring-boot-starter 的
@MqttClientSubscribe注解支持自定义反序列化。 - ✨优化代码 Spring Boot Client 可以自定义 MqttClientSubscribeDetector github #90 感谢
@galaxy-sea贡献 - ✨升级 mica-net 到 1.1.6,解决 eclipse paho mqtt websocket client 连接 mica-mqtt server 报错
- ✨依赖调整,减少 example 示例项目的安全提示
- 🐛解决服务端重启时 client有消息发送,导致 client 无法正常重连 gitee #IC4DWT 感谢
@wtjperi2003反馈 - 🐛同步 netty mqtt codec Fix the assignment error of maxQoS parameter in ConnAck Properties
v2.4.4 - 2025-04-13
- ✨mica-mqtt-server,更好的兼容 Android 环境。github #81 感谢
@KittenBall的反馈和联调测试。
三、重点说明
在 mica-mqtt 的 2.4.5 版本中,对 mica-mqtt-client-spring-boot-starter 的 @MqttClientSubscribe 注解添加了反序列化属性,默认为 json 序列化。用户可自行实现 MqttDeserializer 接口自定义序列化。另外 mica-mqtt 2.4.5 还对注解订阅进行了优化,支持了根据类型的参数绑定,规则如下:
/**
*
* @param topic mqtt topic
* @param message mqtt 原始消息
* @param data 用户自定义的 java bean
*/
@MqttClientSubscribe(
value = "/test/json",
deserialize = MqttJsonDeserializer.class // 2.4.5 开始支持 自定义序列化,默认为 MqttJsonDeserializer json 序列化
)
public void testJson(String topic, MqttPublishMessage message, TestJsonBean data) {
// 2.4.5 开始支持,支持 2 到 3 个参数,字段类型映射规则如下
// String 字符串会默认映射到 topic,
// MqttPublishMessage 会默认映射到 原始的消息,可以拿到 mqtt5 的 props 参数
// byte[] 会映射到 mqtt 消息内容 payload
// ByteBuffer 会映射到 mqtt 消息内容 payload
// 其他类型会走序列化,确保消息能够序列化,默认为 json 序列化
logger.info("topic:{} json data:{}", topic, data);
}