curl 从 7.70.0 版本起原生支持 MQTT 协议,而自 curl 8.19.0版本起,开发者已经可以在终端中通过 MQTTS(基于 TLS 的 MQTT)进行加密通信。这意味着在大多数 Linux / macOS 系统上,无需安装任何额外的 MQTT 客户端工具,一条命令即可完成 MQTT 消息的发布与订阅,推荐使用于连通性测试与验证和快速、临时消息传递场景中。
前提条件
curl 版本要求:
基础 MQTT 通信(
mqtt://):curl ≥ 7.70.0TLS 加密通信(
mqtts://):curl ≥ 8.19.0MQTT 服务:消息队列 MQTT 版的集群接入点地址获取方式如下:
登录 MQTT 控制台。
在左侧导航栏选择资源管理 > 集群管理,选择好地域后,单击目标集群的“ID”,进入基本信息页面。
在接入信息模块,可以获取 MQTT 接入点信息。

运行以下命令确认 curl 版本及协议支持情况,在输出的
Protocols 一行中,确认包含 mqtt(如需 TLS 加密,还应包含 mqtts):curl --version
URL 格式说明
curl 使用 URL 来指定 MQTT 连接参数,格式如下:
mqtt[s]://[username:password@]host[:port]/topic
组件 | 说明 | 示例 |
mqtt:// | 非加密连接,默认端口 1883 | mqtt://mqtt-xxx-public.mqtt.tencenttdmq.com |
mqtts:// | TLS 加密连接,默认端口 8883 | mqtts://mqtt-xxx-public.mqtt.tencenttdmq.com |
username:password | 认证凭据(可选) | admin:public@mqtt-xxx-public.mqtt.tencenttdmq.com |
/topic | MQTT 主题 | /test |
port | 端口号(可选),不填写时 curl 将自动使用标准默认端口(1883 用于 mqtt://,8883 用于 mqtts://) | 1883 |
订阅消息
打开一个终端窗口,运行以下命令订阅主题
curl/test:curl -sN \\-u "your-username:your-password" \\mqtt://mqtt-xxx-public.mqtt.tencenttdmq.com:1883/curl/test
参数说明:
-s:静默模式,不显示进度条。-N:禁用输出缓冲,确保收到消息后立即显示。命令运行后,终端将保持连接并等待接收消息。
说明:
curl 订阅输出的原始数据为二进制格式(包含 2 字节主题长度前缀 + 主题 + 消息内容),终端中可能出现少量乱码字符属于正常现象。

发布消息
保持订阅终端不关闭,另外打开一个终端窗口,运行以下命令向
curl/test 主题发布一条消息:curl \\-u "your-username:your-password" \\-d "Hello TDMQ from curl" \\mqtt://mqtt-xxx-public.mqtt.tencenttdmq.com:1883/curl/test
参数说明:
-d:指定要发布的消息内容。发布成功后,切换到订阅终端,即可看到收到的消息。至此,您已完成了一次完整的 MQTT 发布/订阅通信。

TLS 证书验证
curl \\-u "your-username:your-password" \\-d "Hello TDMQ from curl" \\mqtts://mqtt-xxx-public.mqtt.tencenttdmq.com:8883/curl/test
curl \\--cacert /path/to/ca.crt \\-u "your-username:your-password" \\-d "Hello TDMQ from curl" \\mqtts://mqtt-xxx-public.mqtt.tencenttdmq.com:8883/curl/test
# 支持多个客户端复用同一套客户端证书curl \\--cacert /path/to/ca.crt \\--cert /path/to/client.crt \\--key /path/to/client.key \\-u "your-username:your-password" \\-d "Hello TDMQ from curl" \\mqtts://mqtt-xxx-public.mqtt.tencenttdmq.com:8883/curl/test
curl \\--cacert /path/to/ca.crt \\--cert /path/to/client.crt \\--key /path/to/client.key \\-d "Hello TDMQ from curl" \\mqtts://mqtt-xxx-public.mqtt.tencenttdmq.com:8883/curl/test
常用参数速查
参数 | 说明 | 适用场景 |
-N | 禁用输出缓冲,消息实时显示 | 订阅(必选) |
-d “payload” | 指定发布的消息内容 | 发布 |
-u username:password | 用户名和密码认证 | 需认证的 Broker |
-s | 静默模式,不显示进度信息 | 订阅 |
-v | 详细模式,显示连接握手过程 | 调试排查 |
--cacert | 指定 CA 证书文件 | TLS 连接 |
--cert | 指定客户端证书 | mTLS 认证 |
--key | 指定客户端私钥 | mTLS 认证 |
已知限制
使用 curl 进行 MQTT 通信时,请注意以下限制:
限制项 | 说明 |
QoS 等级 | 仅支持 QoS 0,不支持 QoS 1 和 QoS 2,如需消息可靠传输,请使用专业客户端 SDK。 |
通配符订阅 | 不支持 + 和 # 通配符 |
主题数量 | 每条命令仅支持操作一个主题 |
持久会话 | 不支持跨连接的持久会话 |
Retain 标志 | 发布消息时无法设置 retain 标志 |