关于mqtt:micamqtt-210-发布更好的支持-ssl-双向认证

3次阅读

共计 2429 个字符,预计需要花费 7 分钟才能阅读完成。

一、简介

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.1.0 – 2023-03-05

  • ✨【不兼容】调整接口参数,方便使用
  • ✨【不兼容】底层重构调整
  • ✨ 兼容更多 Spring boot 版本,反对 2.1.0.RELEASE 以上版本。
  • ✨ ssl 反对双向认证 gitee #I61AHJ 感激 @DoubleH 反馈
  • 🐛 修复遗嘱音讯判断 gitee #I6BRBV 感激 @tan90 反馈。
  • 🐛 修复错别字 gitee #I6F2PA 感激 @hpz 反馈
  • ⬆️ 依赖降级

五、迁徙指南

  • mica-mqtt-core 拆分成了 mica-mqtt-clientmica-mqtt-server,防止一些依赖援用问题。
  • HexUtilnet.dreamlu.iot.mqtt.core.util.HexUtil 挪动到了 org.tio.utils.mica.HexUtils

5.1 客户端

5.1.1 订阅回调接口调整

留神:mica-mqtt-client-spring-boot-starter 应用注解订阅能够直升。

IMqttClientMessageListener#onMessage(ChannelContext context, String topic, MqttPublishMessage message, ByteBuffer payload) 办法对立增加 contextmessage 参数。

订阅系列办法须要调整:

// 音讯订阅,同类办法 subxxx
client.subQos0("/test/#", (context, topic, message, payload) -> {logger.info(topic + '\t' + ByteBufferUtil.toString(payload));
});

5.1.2 SSL 双向认证反对

mica:
  ssl:
    enabled: false            # 是否开启 ssl 认证,2.1.0 开始反对双向认证
    keystore-path:            # 可选参数:ssl 双向认证 keystore 目录,反对 classpath:/ 门路。keystore-pass:            # 可选参数:ssl 双向认证 keystore 明码
    truststore-path:          # 可选参数:ssl 双向认证 truststore 目录,反对 classpath:/ 门路。truststore-pass:          # 可选参数:ssl 双向认证 truststore 明码

留神:ssl 存在三种状况

服务端开启 ssl 客户端
ClientAuth 为 NONE(不须要客户端验证) 仅仅须要开启 ssl 即可不必配置证书
ClientAuth 为 OPTIONAL(与客户端协商) 需开启 ssl 并且配置 truststore 证书
ClientAuth 为 REQUIRE (必须的客户端验证) 需开启 ssl 并且配置 truststore、keystore 证书

5.1.2 服务端

5.1.2.1 IMqttMessageListener 调整

IMqttMessageListener onMessage 参数也做了调整,增加了 topic、qoS,message 改为了原始 MqttPublishMessage,不便自行获取 mqtt5.x 的属性。

/**
 * 监听到音讯
 *
 * @param context  ChannelContext
 * @param clientId clientId
 * @param topic    topic
 * @param qoS      MqttQoS
 * @param message  Message
 */
void onMessage(ChannelContext context, String clientId, String topic, MqttQoS qoS, MqttPublishMessage message);

5.1.2.2 ssl 双向认证反对

mica:
  ssl:                        # mqtt tcp ssl 认证
    enabled: false            # 是否开启 ssl 认证,2.1.0 开始反对双向认证
    keystore-path:            # 必须参数:ssl keystore 目录,反对 classpath:/ 门路。keystore-pass:            # 必选参数:ssl keystore 明码
    truststore-path:          # 可选参数:ssl 双向认证 truststore 目录,反对 classpath:/ 门路。truststore-pass:          # 可选参数:ssl 双向认证 truststore 明码
    client-auth: none         # 是否须要客户端认证(双向认证),默认:NONE(不须要)

六、应用文档和示例

  • mica-mqtt-client 应用文档
  • mica-mqtt-server 应用文档
  • mica-mqtt-client-spring-boot-starter 应用文档
  • mica-mqtt-server-spring-boot-starter 应用文档
  • mica-mqtt http api 文档详见
  • mica-mqtt 发行版本记录
正文完
 0