从 API 接口到部署落地,23 分钟带你快速掌握自研 MQTT Broker SDK
从开箱即用的免费试用版,到工程化商用 SDK,再到核心源码定制,覆盖验证、集成、深度定制全流程
与 SNMP 试用包同思路:可执行二进制 + SDK 接口 + Demo 一体化交付,全功能开放
完整工程化 SDK,接口简洁清晰,快速集成网关、嵌入式设备与业务系统
提供产品核心源码,支持深度定制与自主维护,满足高安全高合规场景
聚焦刚需特性,兼顾轻量与高效,专为国内中小企业与工业物联网场景设计
Broker 服务端与 Client 设备端统一架构,一套方案覆盖两端,类型、日志、接口风格一致,降低对接与维护成本。
完整支持 MQTT 3.1.1 与 5.0 标准协议,可对接任何标准 MQTT 客户端与服务端(如 MQTTX、各类开源 MQTT Broker 等)。
剔除冗余功能,仅保留核心刚需特性。Broker 哈希表 O(1) 客户端管理、细粒度锁、非阻塞 IO,低资源占用高性能。
Broker 可部署多独立实例,按业务分区隔离、横向扩容;Client 多实例相互隔离,单设备可模拟多终端接入。
兼容 Windows、Linux、ARM32/ARM64、国产芯片及 STM32F4 嵌入式;提供 CLI 命令行、Web 管理(8088)、GUI 图形界面、Web 网桥(web_bridge)、Service 服务版五种运行形态。
支持内网私有化部署,数据不出内网;提供用户接入认证、ACL 主题权限管控,应用层 Payload 加密接口开放可自定义。
网络、日志、平台适配、底层接口等模块开源开放,可按需定制适配,降低项目集成与个性化改造成本。
提供 Linux .so 与 Windows .dll 动态库(Client / Broker 双端,覆盖 x86 / ARM32 / ARM64);C# PInvoke、Java JNA、Python ctypes、Go cgo 可直接调用同一套 C API,上位机与业务系统快速集成。
一套方案覆盖两端:设备端集成 Client SDK 接入,服务端部署 Broker SDK 转发,Web 管理统一运维
Broker + Client 同一产品线交付,对接与维护成本双降
MQTT 3.1.1 与 5.0 双协议,兼容一切标准 MQTT 生态
免费试用 / 商用 SDK / 源码定制,按项目阶段灵活选择
服务端与设备端各自聚焦核心场景,协同满足完整物联网通信链路
接口极简,配置均有默认值,普通用户仅需填写必填项,配套完整 Demo 源码
// 引入 MQTT Client SDK 头文件 #include "mqtt_client_sdk.h" #include <string.h> // 订阅消息回调(收到消息即触发) void on_msg(const MqttSdkMsg* msg) { printf("主题[%s] 内容[%.*s]\n", msg->topic, (int)msg->payload_len, (const char*)msg->payload); } int main() { MqttSdkClientCfg cfg; MqttSdkClient h; // 1. 全局初始化(整个程序仅 1 次) xxl_mqtt_sdk_global_init(); // 2. 创建客户端:仅 3 个必填项,其余全默认 memset(&cfg, 0, sizeof(cfg)); cfg.client_id = "gw_001"; cfg.broker_ip = "192.168.1.100"; cfg.broker_port = 1883; h = xxl_mqtt_sdk_client_create(&cfg, on_msg, NULL); // 3. 连接 Broker xxl_mqtt_sdk_client_connect(h); // 4. 订阅主题(QoS1) + 发布消息 xxl_mqtt_sdk_client_subscribe(h, "device/data", MQTT_SDK_QOS1, NULL); MqttSdkMsg msg = {"device/data", (const uint8_t*)"hello", 5, MQTT_SDK_QOS1, 0, 0}; xxl_mqtt_sdk_client_publish(h, &msg); // 5. 主循环周期轮询(10~50ms):收包/回调/心跳/断线重连 while (1) { xxl_mqtt_sdk_client_loop(h); usleep(50 * 1000); } }
// 引入 MQTT Broker SDK 头文件 #include "mqtt_broker_sdk.h" #include <string.h> #include <unistd.h> // 认证回调:校验用户名 / 密码 bool auth_cb(broker_handle_t h, const char* cid, const char* user, const char* pwd) { return (user && pwd && strcmp(user, "admin") == 0 && strcmp(pwd, "123456") == 0); } // 事件回调:上线 / 下线 / 发布 / 订阅 / 遗嘱(JSON 数据) void event_cb(broker_handle_t h, BrokerEventType type, const char* json) { printf("事件[%d] %s\n", type, json); } // 消息回调(V2.1):客户端发布的消息内容直通业务 // 约束:收包线程同步执行,禁止阻塞;payload 仅本次回调期间有效,需要保存请自行拷贝 void msg_cb(broker_handle_t h, const char* cid, const char* topic, const uint8_t* payload, int len, int qos, bool retain, uint64_t ts) { printf("消息[%s] qos=%d len=%d\n", topic, qos, len); } int main() { // 1. 创建 Broker 实例(支持多实例) broker_handle_t h = xxl_sdk_mqtt_broker_create(); // 2. 注册认证 / 事件 / 消息回调(消息回调 V2.1 新增,传 NULL 可注销) xxl_sdk_mqtt_broker_register_auth_callback(h, auth_cb); xxl_sdk_mqtt_broker_register_event_callback(h, event_cb); xxl_sdk_mqtt_broker_register_message_callback(h, msg_cb); // 3. 初始化并启动:端口 1883,最大 5000 连接 xxl_sdk_mqtt_broker_init(h); xxl_sdk_mqtt_broker_start(h, 1883, 5000); // 4. 7×24 运行(可另开线程调用 get_stats / kick 等管理接口) while (1) sleep(1); xxl_sdk_mqtt_broker_stop(h); xxl_sdk_mqtt_broker_deinit(h); xxl_sdk_mqtt_broker_destroy(h); return 0; }
以上为真实 SDK 接口的简化示例(签名与头文件一致),完整可编译代码见 SDK 包内 demo/ 目录(Client 4 个 Demo + Broker AppDemo / 服务版 / Web 网桥源码)
Broker 提供 CLI 命令行 / Web 管理(8088)/ GUI / Web 网桥 / Service 服务版五种运行形态;Client 提供交互式用例集,无需编写代码即可逐项验证 MQTT 3.1.1 / 5.0 全部协议特性
// MQTT 3.1.1 客户端交互式用例集(SDK 包 examples/mqtt_client_cli_demo.c) // 运行后可交互输入用例编号(00~13 / 99),逐项验证协议能力 00 - 单 Broker 对接(无加密,必执行,优先测试) 00E - 单 Broker 对接(加密版,创建时配置密钥) 01 - 发布普通消息(QoS0) 02 - 发布可靠消息(QoS1) 03 - 发布最高可靠消息(QoS2) 04 - 发布 Retain 保留消息 05 - 订阅普通主题 06 - 订阅通配符主题(+/#) 07 - 取消主题订阅 08 - 配置遗嘱消息(LastWill) 09 - 加密发布消息(需先执行 00E) 10 - 手动触发断线重连 11 - 断开 Broker 连接 12 - 销毁 Client 实例 13 - 双 Broker 对接(双实例,独立无干扰) 99 - 退出测试程序(释放所有资源)
// MQTT 5.0 全特性覆盖用例集(SDK 包 examples/mqtt50_client_cli_demo.c)
00 - 基础配置:创建 5.0 客户端(含全部 5.0 全局配置)
00E - 加密配置:创建 5.0 加密客户端(Payload 加密 + 5.0 特性)
01 - PUBLISH:带 TTL / 用户属性 / 保留的 5.0 发布
02 - QoS1 发布:PUBACK 原因码 / 消息过期 / 主题别名测试
03 - QoS2 发布:PUBREC / PUBREL / PUBCOMP 全流程(5.0 原因码)
04 - SUBSCRIBE:共享订阅 + 订阅标识符 + 最大 QoS + 本地过滤
05 - SUBSCRIBE:通配符订阅 + 订阅选项(保留处理 + 无本地缓存)
06 - UNSUBSCRIBE:取消订阅 + 取消原因码 + 用户属性
07 - CONNECT:自定义会话过期 / 最大报文 / 接收最大 QoS
08 - LastWill:5.0 增强遗嘱(过期时间 + 延迟发布 + 原因码)
09 - DISCONNECT:优雅断开(原因码 + 会话过期 + 用户属性)
10 - CONNACK:解析 5.0 CONNACK 所有字段
11 - 重连测试:5.0 会话恢复 + 重连后消息续传
12 - 版本切换:3.1.1 / 5.0 协议动态切换对比
13 - 高级特性:主题别名 / 批处理 / 请求响应模式
14 - 安全认证:5.0 用户名 + 密码认证连接
99 - 资源清理:销毁客户端 + 释放所有 5.0 配置资源
# Broker 服务端五种运行形态(SDK 包 bin/ 目录,Linux / Windows 双平台) # 1. CLI 命令行版:内置 Broker,MQTT 监听 1883 ./bin/linux/xxl_mqtt_broker_demo_linux ./bin/windows/xxl_mqtt_broker_demo_windows.exe # 2. 后台服务版:监听 1883,并开放本机管理接口 8089 ./bin/linux/xxl_mqtt_broker_service_linux ./bin/windows/xxl_mqtt_broker_service_windows.exe # 3. Web 管理页面:监听 8088,对接后台服务 8089 ./bin/linux/web_bridge # 浏览器访问:http://127.0.0.1:8088 # 4. GUI 图形界面(Windows / Linux) ./bin/windows/xxl_mqtt_broker_gui_windows.exe ./bin/linux/xxl_mqtt_broker_gui_linux # 5. systemd 服务部署(自动识别系统,部署到 /opt/mqtt) bash broker_service_deploy.sh systemctl status xxl_mqtt_broker # 查看服务状态
# HTTP/JSON 管理接口(本机 8089,由后台服务版开放,curl 即可调用) # 运行状态 / 版本 / 统计 curl http://127.0.0.1:8089/status curl http://127.0.0.1:8089/version curl http://127.0.0.1:8089/stats # 客户端管理(在线数 / 列表 / 详情 / 踢下线) curl http://127.0.0.1:8089/clients curl "http://127.0.0.1:8089/client_info?clientid=mqttx_me" curl "http://127.0.0.1:8089/kick?clientid=mqttx_me" # 服务端发布(topic / msg / qos / retain) curl "http://127.0.0.1:8089/publish?topic=test/topic&msg=hello&qos=0&retain=0" # 保留消息管理 curl http://127.0.0.1:8089/retain_list curl "http://127.0.0.1:8089/clear_retain?topic=test/topic" # 运行配置(日志级别) curl "http://127.0.0.1:8089/set_log_level?level=2"
Client 用例集源码见 SDK 包内 examples/ 目录(mqtt_client_cli_demo.c / mqtt50_client_cli_demo.c 等),Broker 工具链见 bin/ 目录,HTTP 管理接口完整说明见 demo/mqtt_broker_service.c 头部注释。
快速找到适合您项目的版本,详细对比与下载入口请前往下载中心
| 版本 | 协议支持 | 交付形态 | 适用场景 | 获取 |
|---|---|---|---|---|
| MQTT 一体化试用包(免费) | MQTT 3.1.1 / 5.0 全功能 | 可执行二进制 + SDK 接口 + Demo(Broker + Client) | 协议测试、并发压测、技术预研(累计 10 万报文限制,重启清零) | 免费下载 → |
| 商用 SDK(一体化) | MQTT 3.1.1 / 5.0 | Broker + Client 库 / 头文件 / Demo / 文档 | 网关、嵌入式设备、业务系统集成,永久商用授权 | 授权获取 → |
| Client SDK 独立授权 | MQTT 3.1.1 / 5.0 | Client 库 / 头文件 / Demo / 文档 | 仅需终端设备通信能力、无需自建 Broker 的场景 | 授权获取 → |
| 源码高级定制 | MQTT 3.1.1 / 5.0 | 双端核心源码(NDA)+ 定制服务 | 信创 / 等保、高安全高定制化项目 | 联系咨询 → |
关于产品形态、协议能力与集成方式的高频疑问