一、前言

Dromara mica-mqtt 2.4.6 正式版已经发布,请注意从 2.4.x 版本开始将 maven groupId 迁移到了 org.dromara.mica-mqtt,包名切换到了 org.dromara,其它使用上均和老版本保持一致。强烈推荐 大家尽快升级到新的 2.4.x

另由于老的文档散落在各个模块,不方便查看,我们新增了文档站:https://mica-mqtt.dromara.org

二、更新记录

v2.4.6 - 2025-05-19

  • ✨ mica-mqtt-client-spring-boot-starter MqttDeserializer 接口重写,支持泛型调用 (github #95) 感谢 @galaxy-sea 贡献
  • ✨ mica-mqtt-client 批量订阅兼容 mqtt 3.1.1 部分 broker 只返回一个 reasonCode 的情况。感谢 @Jacky 反馈
  • ✨ mica-mqtt-server-solon-plugin 添加对 metrics 指标的支持
  • ✨ mica-mqtt-client-solon-plugin 注解订阅支持自定义序列化(默认 json 序列化)和泛型

注意:由于 2.4.5 使用了错误的 jdk 版本打包发布,导致 java 8 下运行会报错,如果有使用,请升级到 2.4.6

三、重点说明

在 mica-mqtt 的 2.4.6 版本中,mica-mqtt-server-solon-plugin支持了指标:

mica-mqtt-client-solon-plugin注解订阅支持消息泛型序列化,规则如下:

/**
 * 
 * @param topic  mqtt topic
 * @param message mqtt 原始消息
 * @param data 用户自定义的 java bean
 */
@MqttClientSubscribe(
    value = "/test/json",
    deserialize = MqttJsonDeserializer.class // 自定义反序列化,默认为 json 序列化
)
public void testJson(String topic, MqttPublishMessage message, User<UserData> data) {
    // 支持 2 到 3 个参数,字段类型映射规则如下
    // String 字符串会默认映射到 topic,
    // MqttPublishMessage 会默认映射到 原始的消息,可以拿到 mqtt5 的 props 参数
    // byte[] 会映射到 mqtt 消息内容 payload
    // ByteBuffer 会映射到 mqtt 消息内容 payload
    // 其他类型会走序列化,确保消息能够序列化,默认为 json 序列化
    logger.info("topic:{} json data:{}", topic, data);
}

四、使用文档


如梦技术
59 声望7 粉丝

人生就像愤怒的小鸟,当你失败时总又几只猪在笑。