更新于 2026年10月20日

从 HiveMQ Cloud Serverless 迁移

评估 MQTT 负载、重建访问权限、验证客户端,并预留回退窗口后分批切换到 RunMQTT。

HiveMQ 将于 2026 年 12 月 31 日停止 Cloud Serverless Free 与 Serverless PAYG。目前已无法新建 Serverless 集群。旧集群域名不能转移,客户端、保留消息、会话、凭据和权限均不会自动迁移。停服后集群与数据将被永久删除。本次退役不涉及全部 HiveMQ 服务。以上信息于 2026 年 10 月 20 日根据官方公告核验。

先阅读替代方案概览判断是否适合 RunMQTT。HiveMQ 也为符合条件的用户提供免费自托管迁移许可证,该方案需要自行运维 Broker。RunMQTT 与 HiveMQ 无隶属关系。

1. 盘点负载并选择套餐

记录设备与后端的峰值连接数、平均及突发发布速率、消息大小、投递副本数、每客户端订阅数、保留 Topic、持久会话、待处理消息、集成、TLS 信任及已部署设备更新连接地址的方式。确定切换日期前,找出离线设备和写死域名的固件。

使用容量计算器并核对计费指南。每次发布和每份订阅投递均按 512 字节向上取整。20 台持续在线设备每分钟向一个订阅者发送一条不超过 512 字节的消息,30 天约产生 1,728,000 个消息单位,虽然连接数符合 Starter,消息量已超过其 100 万额度。

Starter 包含 QoS 0/1;保留消息与 QoS 2 需要 Growth 或 Scale。包大小、速率、订阅、会话、区域与 SLA 要求,请先联系我们确认,月度额度不代表这些能力的保证。试用需要付款方式,若未在显示的结束时间前取消,会按所选套餐续费。

2. 重建访问权限和连接配置

创建私有 Broker,等待激活,再创建策略模板和设备身份。参阅设备与 Topic 策略。保存 Topic 与权限清单,凭据不应出现在工单或公开仓库中。

配置RunMQTT 目标值
TLS 域名从 Broker 复制安全域名,如 <broker>.tls-broker.runmqtt.com
原生 TLS 端口8883
浏览器 URLwss://<broker>.tls-broker.runmqtt.com/mqtt
用户名自动生成的 <broker-id>/<device-name>,须完整复制
密码新设备密钥,替换 HiveMQ 密码
Client ID每个并发连接唯一;恢复持久会话时保持稳定
信任校验保持证书和域名校验开启;按需更新固定的信任证书

兼容时保留原 Topic 与消息协议。用合成数据验证允许的发布和订阅,以及越权操作被拒绝。模板名称和 Client ID 不会自动限定 Topic。可用 ACL linter做本地审查,再用真实客户端确认服务端执行结果。

TLS 连接应使用安全的 RunMQTT 域名。只添加自定义 CNAME 并不会自动提供有效证书与自定义域名端点。保持连接配置可更新,降低将来再次修改固件的成本。

3. 运行本地客户端检查

公开的验证脚本使用 MQTT.js,创建临时 clean-session 客户端,在测试前缀下发送唯一的合成消息,确认实际收到消息,并可选检查保留消息回放及其包标志。它只连接你指定的目标 Broker,会产生消息用量,不复制源数据,也不迁移凭据。

使用 Node >=22.12 创建独立本地目录,安装 mqtt@5.15.2,下载并检查脚本:

mkdir mqtt-migration-check
cd mqtt-migration-check
npm init -y
npm install mqtt@5.15.2
curl -fsSLo verify.mjs https://runmqtt.com/examples/hivemq-migration/verify.mjs
node verify.mjs --help

创建本地 migration.env,禁止提交到版本库,并限制文件访问权限。用专用测试设备配置替换占位符,仅为该身份授予 migration-check/# 的发布与订阅权限:

MQTT_URL=mqtts://YOUR_BROKER.tls-broker.runmqtt.com:8883
MQTT_USERNAME=YOUR_BROKER/YOUR_TEST_DEVICE
MQTT_PASSWORD=YOUR_TEST_SECRET
MQTT_TEST_PREFIX=migration-check
MQTT_VERSION=5
MQTT_CHECK_RETAINED=0
node --env-file=migration.env verify.mjs

要求 connected、roundtrip、cleanup、passed 均为 true。使用 MQTT_VERSION=4 复测 MQTT 3.1.1,并替换完整 WSS URL 复测浏览器传输。只有包含保留消息的套餐才能设置 MQTT_CHECK_RETAINED=1。保留消息检查要求 observed 与 retainFlag 同时为 true,仅收到内容不能判为通过。超时或 cleanup=false 时,须检查并清理测试命名空间中的保留状态。结束后删除本地凭据文件,撤销临时设备。

2026 年 10 月 20 日的托管检查未通过保留消息一致性验证:初次观察包含 retain=false,更严格的回放检查未收到预期保存值。这是尚未解决的兼容性限制。详见会话与投递。迁移依赖保留消息的应用前,须验证具体客户端与套餐。

4. 规划状态与后端恢复

  • 在新 Broker 重建订阅。沿用 Client ID 不会转移旧会话。
  • 原离线队列和进行中的 QoS 交换不会迁移。旧服务可用时处理必要消息,或从应用的持久事件源恢复。
  • 使用 retain 标志主动重新发布当前状态,保留版本或时间戳,清除过期值,并区分状态与命令。不要将一次性命令作为保留状态重放。
  • 若从旧 Broker 采集保留消息,仅读取已授权 Topic。通配符快照不是原子导出,也不能证明已收集全部保留 Topic。须核对 Topic 清单,并协调切换过程中的状态更新。
  • 协调两侧后端订阅者与命令发布者。双路投递可能重复执行业务动作,须使用事件 ID、去重和明确的命令路由方案。

5. 分批切换并验收

先迁移少量有代表性的客户端,包括受限设备和后端消费者。检查常规与突发流量、重连、会话过期、LWT、权限失败、应用级确认和用量。重启应用与网络后再次验证,通过后再扩大批次。

在旧服务仍可用时保留明确的回退窗口。验收失败就停止扩大,回退时协调凭据、后端路由和当前状态。必要设备与应用验收完成前不要删除源集群,HiveMQ 无法重建已删除的 Serverless 集群。

下载切换清单。ESP32、Node-RED 参阅客户端指南;Home Assistant 参阅发现与重启指南。

需要迁移评估时,联系 RunMQTT,提供大致连接数、消息速率、消息大小、所需功能、客户端版本、集成与目标日期。不要发送密码或客户消息内容。切换前约定协助范围及合同要求。