发版记录
# smart-mqtt broker v0.40发布(2024-12-06) (opens new window)
- 优化消息推送模型,提升通信性能。
- 增加消息队列历史数据清退功能,节省服务内存开销。
- 增加消息推送率指标的检测。
- 升级 smart-socket,启用柔性内存池模型。
- 容器环境支持时区设置功能,默认:上海
- 修复某些场景下的空指针问题。
- 数据库表:connection 增加索引配置
# smart-mqtt broker v0.37发布(2024-04-06) (opens new window)
- 采用更高效的编解码算法,TPS 提升至 790万/秒。
- 重构解码算法,提升代码可读性。
- 优化消息重发的实现机制。
- 补充单元测试。
# smart-mqtt broker v0.36发布(2024-03-07) (opens new window)
- 降低控制台指标监控打印频次。
- 新增共享订阅特性。
- 调整 Topic 编解码算法,提升性能至 700万/秒。
# smart-mqtt broker v0.35发布(2024-01-28) (opens new window)
- 优化消息总线 Consumer 的接口设计。
- 临时性事件类型执行完毕后自动销毁订阅者。
- 提升事件总线的执行性能。
- BrokerTopic 增加可用性状态量。
- 增加遗嘱消息配置的合法性校验
- 提升通信性能。
- 加入新版本检测功能,及时获得最新动态。
- smart-socket 升级至 1.5.41
- smart-http 升级至 1.3.8
# smart-mqtt broker v0.34发布(2023-12-16) (opens new window)
【社区版】
- 引入弱时间精度提升通信性能
- 移除无用事件类型:MESSAGE_BUS_CONSUMED
- 重构消息推送模型,简化代码复杂性
- 修复 v0.33 引入的packetId解码算法 bug
【企业版】
- 优化内存使用率统计指标
- 新增客户端踢下线功能
- 优化指标统计界面
- 升级 opentiny 至 3.12.0
# smart-mqtt broker v0.33发布(2023-12-03) (opens new window)
【社区版】
- 优化消息总线设计。
- 移除无用事件类型:OPEN_API_STARTED、CONNACK、NOTIFY_TOPIC_PUSH
- 优化 MQTT5 关于 Disconnect 的规范实现。
- 采用位运算方式优化协议编解码算法。
- 减少通信内存开销。
- 升级 smart-socket 至 1.5.39。
【企业版】
- 优化指标展示的时间格式化效果。
- 修复系统参数设置不能为空的问题。
- 支持配置化展示 dashboard 的指标项。
- 升级 smart-http 至 1.3.6。
# smart-mqtt broker v0.32发布(2023-11-12) (opens new window)
- 优化 Plugin 接口设计。
- 重构消息队列。
- 提供优雅停机能力。
- 提升 mqtt client 服务稳定性。
- 改进连接认证功能。
- restapi 启用异步接口功能。
- 优化企业管理后台 topic订阅检索功能。
- 提供集群演示环境一键部署能力。
- 企业管理后台新增系统参数配置功能。
- 升级 smart-http 至 1.3.5。
- 升级 smart-socket 至 v1.5.36。
# smart-mqtt broker v0.31发布(2023-10-21) (opens new window)
【社区版】
- 合并了开源之夏活动课题作业
- 移除些许无用代码。
- 修复日志中单词拼写错误问题。
- 部分性能优化
# smart-mqtt broker v0.30发布(2023-10-14) (opens new window)
【社区版】
- 日志框架替换为 logback
- 升级 maven-javadoc-plugin 至 3.6.0。
- broker host 默认设置为:0.0.0.0。
- Plugin 日志级别调整为 debug。
【企业版】
- 新增 License 在线管理功能
# smart-mqtt broker v0.29发布(2023-10-06) (opens new window)
【社区版】
- smart-mqtt-protocol-gateway 模块,用于将第三方协议适配成 mqtt 结构。
- smart-socket 升级至兼容 JDK 8的最新版:1.5.35
- 调整连接认证代码实现。
【企业版】
- 新增系统参数模块,提供灵活的配置能力。
- 新增连接认证功能,认证密码支持 md5、sha256的签名算法。
- smart-http 升级至最新版:1.3.2
# smart-mqtt broker v0.28发布(2023-09-17) (opens new window)
- bugfix:修复retain消息实现不符合规范的问题。(感谢 springrain-zorm 反馈)
- 调整消息总线接口入参设计。
- 删除 broker 模块中的 EventObject。
- 服务配置项 name 调整为 nodeId。
- 移除 BrokerContext#getRuntime 接口。
- 调整控制台 Banner 输出时机。
# smart-mqtt broker v0.27发布(2023-09-03) (opens new window)
【社区版】
- 新增事件类型:UNSUBSCRIBE_TOPIC,当 topic 订阅关系解除时触发。
- 移除 BrokerContext#getSessions 接口。
- 提升 MqttClient 的重连功能稳定性。
【企业版】
- 基于事件总线提供更高效、更精准的指标实时统计。
- 更加丰富的指标统计时间粒度。
- 新增客户端连接管理页面。
- 新增 Topic 管理页面。
- 新增账户管理功能
- 新增 Broker 集群管理功能
# smart-mqtt broker v0.26发布(2023-08-13) (opens new window)
- 移除 commons-collections4 依赖,减少发行包大小。
- 新增 BROKER_CONFIGURE_LOADED 事件类型,当配置文件完成加载后触发。
- 新增系统环境变量:BROKER_LOWMEMORY、BROKER_MAXINFLIGHT,用于设置 Broker 启动参数。
- 支持启用低内存模式,提升百万连接场景下的资源使用率。
- noConnectIdleTimeout 默认值调整至15秒
- MqttClient 采用事件模型处理 Connect ACK消息。
- 提升MqttClient重连功能稳定性。
- 采用时间轮定时器替换JDK默认定时器。
# smart-mqtt broker v0.25发布(2023-07-29) (opens new window)
【社区版】
- smart-socket升级值1.5.32。
- 设置 slf4j-simple 的 maven scope 为 runtime。
- 更新 readme.md。
- 重构消息总线,提升可扩展性。
- 新增事件类型:OPEN_API_STARTED。
- 移除开源版中的 openapi 定义。
- MqttSession 新增 getMqttContext 接口。
- 清理 smart-mqtt.yaml 配置文件,移除无用项。
【企业版】
- 新增两款数据桥接插件:redis-bridge、kafak-bridge
- 添加后台登录账户认证。
- 提升 mqtt-over-websocket 的稳定性。
# smart-mqtt broker v0.24发布(2023-07-08) (opens new window)
【开源版】
- 升级smart-socket至1.5.31
- 升级smart-http至1.2.6
- 增加broker启动时关于技术支持联系方式的露出。
- 移除开源版中的前端资源,迁移至企业版。
【企业版】
- 增加按省份维度的访问量排名统计。
- 提供更加高效,且自适应采样粒度的指标统计功能。
- 企业版的主数据库调整为mysql,依旧保留h2的开箱即用特性。
- 屏蔽服务启动时的DDL语句打印。
- 优化数据库索引,提供更高效的检索体验。
- 丰富集群间的关键信息互通。
- 修复非周期性指标在入库时被重置的bug。
# smart-mqtt broker v0.23发布(2023-06-24) (opens new window)
- smart-http升级至1.2.5
- layui-vue 升级至2.3.1
- 企业版页面新增地图监控大屏。
# smart-mqtt broker v0.22发布(2023-06-17) (opens new window)
【社区版】
- 禁止客户端匹配 ”$“ 开头的主题名。
- BrokerContext新增bundle、getBundle用于绑定自定义资源。
- Broker服务的线程池、内存池支持资源复用。
- 优化Broker端的消息推送模型。
- 提升MqttClient通信服务稳定性。
- smart-http升级至1.2.4
【企业版】
- 移除redis-bridge-plugin模块,将于开源之夏活动中由社区同学贡献开源版。
- 移除mqtt-bridge-plugin模块。
- 优化指标统计
# smart-mqtt broker v0.21发布(2023-06-03) (opens new window)
【社区版】
- smart-socket 升级至1.5.29。
- fastjson2 升级至 2.0.21.graal。
- 迁移指标采集功能至企业版。
- 优化SubAck的响应效率。
- Broker支持注册 smart-socket 插件。
- 新增事件类型:NOTIFY_TOPIC_PUSH,用于触发指定topic的消息推送。
- 优化MQTT的连接会话管理。
- 重构topic的订阅匹配模型。
- 重构消息推送模型。
- 重构飞行窗口。
- 提升MqttClient服务稳定性。
- 补充单元测试用例。
【企业版】
- 采用异步方式持久化统计指标,降低对通信性能造成的影响。
- 统计指标适配 Prometheus。
# smart-mqtt broker v0.20发布(2023-05-20) (opens new window)
【社区版】
- smart-socket 升级至1.5.27。
- snakeyaml 升级至2.0。
- 修复了消息编解码过程中的bug,提高消息传输的可靠性。
- 优化了消息解码异常触发的状态机,降低误判概率。
- 加强了消息编解码字节边界的检验,避免数据解析错误。
- 改进了内存管理策略,减少通信过程中的内存消耗。
- 修复了MQTT 5.0协议实现中的遗嘱消息和QoS2通信编解码问题。
- 对遗嘱消息模型字段进行了优化,提高代码可读性。
- 引入社区同学贡献的redis桥接模块,提供更多扩展选项。
- 为MQTT Client提供更高效的pulbish能力,提升性能表现。
【企业版】
- 补充表结构索引,解决慢sql问题。
- 新增账户管理接口
- Broker启动时重置旧连接状态。
# smart-mqtt broker v0.19发布(2023-04-22) (opens new window)
- 实现消息重发规范
# smart-mqtt broker v0.18发布(2023-04-16) (opens new window)
- 社区版中移除连接认证功能,后续将在企业版中重新提供一套相对成熟的方案。
- 清理无用配置项。
- 优化消息Push逻辑。
- 重构 BrokerTopic 模型结构。
- 社区版源码中补充关于商业授权的License注释。
- 【企业版】优化Broker管理系统UI。
- 【企业版】节点管理中补充 Broker 端口号的信息记录。
- 【企业版】补充表索引,解决慢SQL问题。
- 【企业版】H2数据库启用mysql模式。
- 【企业版】关闭ChatGPT入口。(因为国内服务器已无法调用OpenAPI)
# smart-mqtt broker v0.17发布(2023-03-19) (opens new window)
- 通过引入smart-socket的插件化机制,以更低的性能损耗实现消息超时重发。
- 修复此前版本引入的topic取消订阅不生效的bug。
- 网络断开连接后即时中断消息推送,减少不必要的尝试。
- MQTT Client 的topic订阅与取消订阅请求纳入飞行队列管理。
- 重构部分消息模型。
- 重构飞行队列,提供更加完善的Push能力。
- 更合理的日志输出。
# smart-mqtt broker v0.16发布(2023-03-19) (opens new window)
- 优化 docker-compose.yml 配置,提升压测体验。
- 简化客户端连接空闲超时处理逻辑,节省内存开销。
- 显式管理 openAPI 服务的线程资源。
- 提升IO的flush效率。
- 调整内存消息队列的消费模式:当订阅者消费过慢导致消息被发布者覆盖,将直接跳跃至最新一条。
- 简化消息的 Push 模型,并获得大幅的性能提升。
- 暂时移除消息重发策略,会在后续版本中重构。
- 缩小 MQTT Client 消息发送的锁粒度,提升通信效率。
- 重构飞行队列,在高并发场景下能显著节省内存开销。
- 其他关于内存和性能的细节优化。
# smart-mqtt broker v0.15发布(2023-03-04) (opens new window)
【社区版】
- smart-socket 版本调整至:1.5.24。
- smart-http 版本升级值:1.1.21。
- 完善 openAPI 定义,并提供部分接口实现。
- 完善 MQTT5 协议规范的实现。
- Broker 支持节点命名,用于集群模式下区分节点的唯一性。
- 提供内存模式的指标统计功能。
- 调整消息推送服务与插件模块的初始化顺序。
- MQTT Client 支持飞行窗口,提供更稳定可靠的通信服务。
- 消息序列化日志打印调整成 JSON 格式输出。
- 改进后台管理系统的交互体验。
【企业版】
- 新增 chatGPT 插件,实现与人工智能对话。
- 新增 Database 插件,用于持久化Broker运行时数据以供后台管理系统展示。(适配数据库:H2、MySQL)
- 实现现存所有的 openAPI 接口。
# smart-mqtt broker v0.14发布(2023-01-28) (opens new window)
- 新增事件类型:SUBSCRIBE_ACCEPT、UNSUBSCRIBE_ACCEPT、CONNACK
- 重新设计MQTT协议编解码接口,提升代码可读性、扩展性、可维护性。
- 新增broker后台管理系统。
- 完善MQTT5.0规范实现:
- smart-mqtt-client 模块适配 mqtt5.0 协议。
- 客户端使用receiveMaximum限制客户端愿意同时处理的QoS等级1和QoS等级2的发布消息最大数量。
- 如果服务端不愿意接受CONNECT但希望表明其MQTT服务端身份,可以发送包含原因码为0x84(不支持的协议版本)的CONNACK报文,然后必须关闭网络连接。
# smart-mqtt broker v0.13发布(2022-12-31) (opens new window)
社区版
- 适配 mqtt 5.0 规范协议。
- 更新的项目readme描述信息。
- MqttClient 支持 maxPacketSize 配置,限制 MQTT 消息包容量上限。
- 增加事件类型:
SUBSCRIBE_REFRESH_TOPIC
,当客户端取消 topic 订阅时触发。 - 修复特定场景下消息订阅失效问题。
- 重新设计消息编解码器。使整体结构更清晰,更具扩展性。
- smart-socket 升级至
1.6.1
。
# smart-mqtt broker v0.12发布(2022-12-31) (opens new window)
社区版
- 优化客户端超时断连的提示信息。
- 重构Connect消息的处理逻辑。
- 实现连接认证失败的错误响应码。
- topic订阅支持黑名单约束。
- 优化Broker线程数配置,要求至少2个线程。
- 整理provider包结构。
- 修复操作系统 hosts 配置异常可能引发的接口阻塞问题。
企业版
- 试用版License过期时间延续至2023年12月31日。
- 修复 License 过期时间格式化错误问题。
- 优化运行期间 License 过期后的提示文案。
# smart-mqtt broker v0.11发布(2022-12-22) (opens new window)
社区版
- MQTT默认的最大报文字节数调整为 1MB。
- 调整Broker消息推送线程组名称。
- 优化消息推送模型,获得更强劲的通信性能。
- 调整MQTTClient线程组名称。
- 提升飞行窗口稳定性
# smart-mqtt broker v0.10发布(2022-12-16) (opens new window)
社区版
- 采用自研的压测工具 smart-mqtt-bench 替换 emqx-bench,以获得更好更强劲的压测体验。
- fastjson 升级至 fastjson2:2.0.20.graal。
- 重构消息推送模型,通过优化设计获得更高的通信性能。
- 新增事件总线的事件类型:MESSAGE_BUS_CONSUMED
- MemoryMessageStoreQueue 仅存储类型为 MqttPublishMessage 的消息。
- 缓冲区配置参数由 readBufferSize 调整为 bufferSize,且 read/write 共享该参数。
- 新增 Broker 服务的 Topic 数量限制,且默认值为:1024。
- MQTT Broker 支持的最大报文采用参数化配置:maxPacketSize。
- maxKeepAliveTime 由 1分钟调整成10分钟。
- 移除 BrokerContext#batchPublish 接口。
- 移除 MonitorPlugin 插件。
- 多个 MQTTClient 支持共享内存池。
- MQTT Client 缓冲区采用参数配置化。
- 支持临时扩容缓冲区容量,不超过 maxPacketSize 即可。
- 升级飞行窗口流控算法。
- 消息输出支持主动和被动两种模式。
企业版
- 调整授权提示信息。
- 改进打包工具。
- 适配最新版 smart-mqtt。
# smart-mqtt broker v0.9发布(2022-12-03) (opens new window)
社区版
- 读缓冲区大小调整为参数配置化。
- CONNECT_TIMEOUT默认值调整为5秒
- MQTT 消息输出功能调整为MqttWriter接口的具体实现类,以适应 mqtt-over-websocket 的场景。
- 修复unsubscribe一个未订阅的 topic 时引发的空指针问题。
- 配置文件调整为 yaml 格式。
- 插件服务支持优先级排序。
企业版
- 新增消息桥接插件,现已实现了 mqtt-bridge-mqtt。
- 新增 mqtt-over-websocket新特性。
# smart-mqtt broker v0.8发布(2022-11-12) (opens new window)
- 升级 smart-socket 至 1.5.23
- smart-mqtt 相关组件提交至 Maven 中央仓库。【ISSUE:I5ZOQ4 (opens new window)】
- 重构消息总线
- 指标监控频率调整为1分钟。
- 客户端支持通配符订阅。【ISSUE:I5ZJLZ (opens new window)】
- 修复客户端重连后没有触发 Topic 订阅的问题。
# smart-mqtt broker v0.7发布(2022-09-10) (opens new window)
- 新增 docker-compose.yml ,极致体验的 MQTT Broker。
- 优化日志级别。
- Broker接受消息后不对Qos进行持久化。
- ping响应消息采用单例模式。
- 支持系统环境变量配置broker运行参数,现开放 BROKER_PORT、BROKER_THREADNUM两项配置。
- 将插件的启动先于 Broker TCP服务启动之前完成。
- 启动 TCP 服务时若发生异常释放相关资源。
- 启用内存池,提升运行性能。
- 消息read缓冲区暂时下降至 4KB,下个迭代换成配置化。
- 启用运行指标监控插件。
# smart-mqtt broker v0.6发布(2022-09-03) (opens new window)
- 应社区用户要求,开源版 smart-mqtt适配 JDK 回退至1.8。
- 完善retain消息的规范实现,当服务端接收到保留标志为 1 且有效载荷为零字节的 PUBLISH 报文时,该主题下任何现存的保留消息必须被移除。
- 优化日志输出格式,增加时间信息。
- smart-mqtt broker 线程数支持配置化。
- 更新客户端connect鉴权的接口设计。(by @yamikaze )
- 支持docker启动 smart-mqtt 服务
- 修复mqtt协议版本不兼容时引发的空指针问题。
- 修复订阅topic后retain消息被无限推送的问题。
# smart-mqtt broker v0.5发布(2022-07-17) (opens new window)
- 【新特性】Broker支持客户端连接鉴权
- 【优化】重构Topic订阅逻辑,并增加重订阅特性
- 【优化】简化客户端连接超时监听的处理逻辑。
- 【优化】对各事件类型打上标注
- 【优化】清理TopicFilterProvider,开源版与企业版保持同等Topic匹配策略
- 【优化】采用事件总线监听连接活跃状态
- 【优化】确保网络断开后,事件状态 EventType.DISCONNECT 必然被调用
- 【优化】引入订阅事件的退出机制
- 【优化】AbstractSession 新增 getRemoteAddress 接口
# smart-mqtt broker v0.4发布(2022-07-10) (opens new window)
- 【新特性】升级了Broker内核的架构设计,采用事件驱动+消息驱动的双引擎模式构建出具备高度扩展性的MQTT服务
- 【新特性】支持Topic通配符的订阅方式
- 【优化】彻底移除了原先监听器的功能,统一切换至事件总线
- 【优化】引入 slf4j-simple 进行日志输出
- 【优化】升级 smart-socket 至 1.5.19,带来更安全的网络通讯,可支持 TLSv1.3
- 【优化】移除 fastjson 依赖
- 【优化】其他一些细节优化
- 【Bugfix】修复连接成功后userName未绑定至MqttSession的问题
# smart-mqtt broker v0.3发布(2022-05-01) (opens new window)
- 【新特性】Retain 消息内存持久化,并在客户端 CONNECT 成功后推送匹配的消息。
- 【新特性】新增飞行窗口(Inflight Window)功能,限制同时发送Qos1和Qos2的数量,保障通信质量。
- 【新特性】新增 MQTT Broker 和 MQTT Client 的消息重发功能。
- 【优化】重构 MQTT 消息模型设计。
- 【优化】改进消息内存持久化的处理逻辑。
- 【优化】提升并发场景下的线程安全性。
- 【优化】改进客户端的 subscribe 和 publish 的接口设计。
- 【优化】客户端正常断开连接时发送 DISCONNECT 消息。
- 【优化】MQTT 消息对象序列化调整为 JSON 格式。
- 【优化】主动拦截已断开连接的消息发送行为。
- 【优化】以正整数作为合法的 packetId。
- 【优化】补充压测的单元测试。
- 【bugfix】修复Broker端在某些异常场景下资源释放不彻底问题。
- 【bugfix】修复 CONNECT 消息的合法性校验错误问题:如果客户端提供的 ClientId 为零字节且清理会话标志为 0,服务端必须发送返回码为 0x02的 CONNACK 报文响应客户端的 CONNECT 报文。
# smart-mqtt broker v0.2发布(2022-04-18) (opens new window)
- 优化客户端ping消息:发送了 PINGREQ 报文之后,如果在合理的时间内仍没有收到 PINGRESP 报文,则关闭到服务端的网络连接。
- 优化Connect消息监听:网络连接建立后,如果服务端在合理的时间内没有收到 CONNECT 报文,服务端应该关闭这个连接。
- 优化 Connect ACK 消息监听:如果客户端在合理的时间内没有收到服务端的 CONNACK 报文,客户端应该关闭网络连接。
- 优化报文标识符的生成策略,防止同一标识符在同时刻被复用。
- 内存持久化会话状态。
- 重构Qos1和Qos2的回调处理机制。
- bugfix:修复unsuback报文标识符取值不正确问题
- bugfix:修复 broker 推送消息至subscriber时继承了publisher消息质量的问题。
- 其他一些代码细节优化
# smart-mqtt broker v0.1发布(2022-04-14) (opens new window)
- 支持MQTT v3.1.1协议标准
- 支持Qos0、Qos1、Qos2 的消息传递
- 支持遗嘱消息
- 支持 retain 消息
- 支持心跳消息
- 插件化设计模式
- mqtt client 相关功能
- 优雅停机