国产替代 · 全自研 · Broker + Client 一体化 · 无第三方依赖

国产替代开源 MQTT · 万物互联
芯祥联自研 MQTT 协议栈

纯 C 语言自研 MQTT 协议栈,无第三方依赖、许可来源清晰,完整支持 MQTT 3.1.1 / 5.0 双协议。面向中小企业、工业网关、嵌入式与内网私有化场景,提供「免费试用 · 商用 SDK · 源码交付」三级交付模式,从设备接入到消息传输一套方案覆盖两端。

🎬 MQTT Broker SDK 视频讲解

从 API 接口到部署落地,23 分钟带你快速掌握自研 MQTT Broker SDK

三种交付模式,按需选择

从开箱即用的免费试用版,到工程化商用 SDK,再到核心源码定制,覆盖验证、集成、深度定制全流程

📦

MQTT 一体化试用包(免费)

与 SNMP 试用包同思路:可执行二进制 + SDK 接口 + Demo 一体化交付,全功能开放

  • 含可执行二进制:Broker 命令行 / Web 管理 / GUI + Client 交互与自动化 Demo
  • 含 SDK 接口与 Demo 样例,可二次开发验证客户业务
  • 唯一限制:累计 10 万条报文,重启清零,无其他功能限制
  • 无连接数、主题数、协议特性、运行时间限制
  • 配 MQTTX 等标准客户端,5 分钟完成收发验证
📜

源码交付(高级定制版)

提供产品核心源码,支持深度定制与自主维护,满足高安全高合规场景

  • Broker + Client 双端核心源码授权(NDA 协议)
  • 可自定义认证鉴权、日志输出、网络适配层
  • 适配信创 / 等保 / 特殊行业认证场景
  • 配套源码架构解读、定制开发与性能调优服务
  • 授权清晰,可用于二次开发与产品化发行

八大核心能力

聚焦刚需特性,兼顾轻量与高效,专为国内中小企业与工业物联网场景设计

🔗 一体化设计

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,上位机与业务系统快速集成。

Broker + Client 一体化架构

一套方案覆盖两端:设备端集成 Client SDK 接入,服务端部署 Broker SDK 转发,Web 管理统一运维

设备端 · MQTT Client SDK STM32 / 网关 / 工控机 / 上位机 11 个 API:创建 / 连接 / 发布 / 订阅 QoS 0/1/2 · 遗嘱 · 断网重连 · 心跳 MQTT 3.1.1 / 5.0 自动适配 消息传输层 自研 MQTT Broker 内核 消息路由 · 会话持久化 · 订阅管理 QoS 可靠投递 · 保留消息 · 遗嘱 24 个 API + 认证 / ACL / 事件 / 消息回调 TCP 1883 管理形态 Web 管理:HTTP 8088(在线监控/ 客户端管理 / 消息下发 / 日志) CLI / Web 网桥 / Service 服务版 GUI 版:Windows / Linux GTK 业务应用层 企业管理后台 · 组态大屏 · 手机 APP / 小程序 · 数据采集平台(标准化 API / HTTP 快速集成) 标准化 API / HTTP 对接
1
套方案覆盖两端

Broker + Client 同一产品线交付,对接与维护成本双降

2
种协议版本

MQTT 3.1.1 与 5.0 双协议,兼容一切标准 MQTT 生态

3
种交付形态

免费试用 / 商用 SDK / 源码定制,按项目阶段灵活选择

Broker + Client 双端产品价值

服务端与设备端各自聚焦核心场景,协同满足完整物联网通信链路

Broker 服务端

海量连接 · 完整协议 · 稳定可靠

  • 万级客户端并发长连接,单实例设计容量 11000 连接
  • 完整消息路由、会话保持、QoS 0/1/2、遗嘱、5.0 共享订阅
  • 消息低延迟转发,无内存泄漏、无句柄泄漏,7×24 小时运行
  • 多实例独立部署,业务分区隔离、横向扩容
  • 用户接入认证 + ACL 主题权限管控 + 匿名开关
  • 会话 / 订阅 / 保留消息持久化,重启不丢失
  • 提供 .so / .dll 动态库 + .a / .lib 静态库,C/C++、C#、Java、Python、Go 及组态软件可对接
  • Web 管理(8088)+ CLI + GUI + Web 网桥 + Service 服务版,多形态运维
Client 设备端

极致轻量 · 极简接口 · 全平台覆盖

  • 资源占用极低,适配 STM32F4、FreeRTOS/RT-Thread 等嵌入式环境
  • 完整发布订阅、QoS 0/1/2、消息保序、遗嘱、断网自动重连
  • 多 Client 实例同时创建、相互隔离,单设备模拟多终端
  • 仅 11 个 API,3 个必填配置项即可创建客户端,1 天完成集成
  • MQTT 5.0 共享订阅:只需配置共享组名,SDK 自动拼接 $share/
  • 应用层 Payload 加密:crypto_enable + 16 字节密钥,接口开放可自定义
  • 主循环轮询驱动、无线程依赖,嵌入式可直接照搬架构
  • Windows / Linux / ARM32 / ARM64 / STM32,一次开发多平台复用

API 快速上手:几步完成 MQTT 接入

接口极简,配置均有默认值,普通用户仅需填写必填项,配套完整 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 网桥源码)

CLI 命令手册:零代码验证协议全能力

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)+ 定制服务 信创 / 等保、高安全高定制化项目 联系咨询 →

常见问题

关于产品形态、协议能力与集成方式的高频疑问

免费试用版和商用 SDK 有什么区别?+
MQTT 一体化试用包(含可执行二进制、SDK 接口与 Demo 样例)全功能开放,可直接运行压测验证;唯一限制是累计处理 10 万条 MQTT 报文后需重启清零(计数所有报文:CONNECT/PUBLISH/SUBSCRIBE 等,达到后拒绝新发布/转发但不断开已有连接),无连接数、主题数、协议特性、运行时间限制。商用 SDK 解除报文限制,提供库文件、头文件、Demo 与文档,永久授权无年费。
支持 MQTT 5.0 吗?有哪些高级特性?+
完整支持 MQTT 3.1.1 与 5.0 双协议(编译开关切换)。5.0 特性包括:共享订阅(客户端只需配置共享组名,SDK 自动拼接 $share/ 前缀并完成负载均衡)、消息过期、会话过期、最大报文限制等,可对接任何标准 MQTT 客户端与服务端。
能在 STM32 等嵌入式设备上运行吗?+
可以。Client SDK 已实测 STM32F4 系列,交付 STM32CubeIDE / Keil 完整工程(配合 lwIP 网络栈),主循环轮询驱动、无线程依赖,嵌入式可直接照搬架构。Windows / Linux x86 实测通过;ARM 架构、ESP32、FreeRTOS/RT-Thread 等未实测平台提供付费定制移植服务。
消息加密如何实现?+
SDK 提供应用层 Payload 自动加解密:配置 crypto_enable 为 true 并设置 16 字节密钥(crypto_key / crypto_iv)即可,主题保持明文便于路由。加密接口对外开放,支持用户自定义加密实现,也可选用公司自研安全算法,满足不同等级安全接入需求。
SDK 是开源的吗?可以商用吗?+
采用「开源组件 + 闭源内核 + 授权定制」模式:网络、日志、平台适配、底层接口等外围模块开源开放,客户可自行定制;核心协议栈(报文解析、会话管理、并发调度)闭源保障稳定,可通过源码授权获得。商用授权为永久授权,允许内部二次开发与产品化,禁止二次分发源码。
支持哪些平台?+
已实测平台:Windows 11、Linux x86_64(支持腾讯云等服务器部署)、STM32F4 系列;Broker 另支持 Linux ARM32/ARM64。ARM 架构其他型号、各类 RTOS 等未实测平台,可提供付费定制移植适配服务,一次适配多项目复用。
如何快速验证产品能力?+
下载 MQTT 一体化试用包:Broker 提供 CLI 命令行版(1883)、Web 管理一体化版(8088,在线监控/客户端管理/消息下发/认证配置/日志)、GUI 图形界面版、Web 网桥(web_bridge,支持浏览器与 Web 应用接入)、Service 后台服务版;Client 提供 3.1.1/5.0 交互式命令行 Demo 与自动化压力测试程序。配 MQTTX 等标准客户端 5 分钟即可完成收发验证。
支持哪些高级语言?如何通过 .so / .dll 集成?+
SDK 同时交付静态库(.a / .lib)与动态库(Linux .so / Windows .dll),Client 与 Broker 双端均覆盖 x86 / ARM32 / ARM64。C/C++ 直接链接;C# 通过 PInvoke、Java 通过 JNA/JNI、Python 通过 ctypes、Go 通过 cgo 加载 .so/.dll 调用同一套 C API,无需重新封装协议栈。动态库接口与头文件完全一致,高级语言项目可快速集成。
与主流开源 Broker 相比有什么优势?+
一是国产纯自研、无第三方依赖、许可来源清晰,可作为国产替代开源 MQTT 方案,投标商用、信创项目无顾虑;二是 Broker + Client 一体化交付,一套方案覆盖两端,降低对接与维护成本;三是提供中文商业技术支持、按项目/公司永久授权,可选源码定制与移植服务,自主可控、数据不出内网,适合中小企业低成本快落地。
MQTT 和 SNMP 有什么区别?我的项目该选哪个协议?+
MQTT 面向物联网设备消息的发布/订阅传输(Publish/Subscribe 主题模型),适合传感器上报、远程指令下发、一对多消息推送;SNMP 面向网络设备的管理与监控(Agent/NMS 模型,基于 OID 树),适合交换机、路由器、服务器的运行状态采集与参数配置。一句话区分:要「传消息」选 MQTT,要「管设备」选 SNMP。两者并不互斥,智能网关、边缘设备类产品常同时集成——用 MQTT 上联业务平台,用 SNMP 管理本地网络设备。芯祥联 XXLMQTT(MQTT)与 XXLSNMP(SNMP)均为国产自研协议栈,纯 C 实现,可在同一产品中共存。
物联网通信协议怎么选?MQTT、CoAP、HTTP、Modbus 对比+
按场景选型:设备数量多、需要发布订阅与远程推送、处于弱网环境,选 MQTT——轻量(最小报文仅 2 字节)、QoS 0/1/2 保证可靠投递、遗嘱与持久会话、5.0 支持共享订阅;设备资源极度受限、请求-响应模型,选 CoAP;已有 Web 接口、设备量少、实时性要求不高,选 HTTP(无服务端推送、开销大);工业现场串口/总线设备互联,选 Modbus。物联网设备接入首选 MQTT:国产自研 XXLMQTT 提供 Broker + Client 一体化方案,可国产替代开源 MQTT Broker,私有化部署、数据不出内网,支持从 STM32 嵌入式到 Linux 服务器全场景。

立即开始使用 XXLMQTT

免费下载 MQTT 3.1.1/5.0 全功能试用版,或申请商用 SDK 授权与源码合作

免费下载试用