GitHub
兼容 Broker: Mosquitto 2.x EMQX 5.x VerneMQ
核心引擎: Quarkus Native Java 25

统一 MQTT 认证。单一轻量级 HTTP 网关。

将 EMQX、Mosquitto 和 VerneMQ 统一接入现有 REST 后端,无需编写繁琐的 Broker 专有插件。通过内置 Web 管理面板即可轻松管理路由、查看健康探测与访问日志。

$ docker run -d -p 8085:8085 -e GATEWAY_ADMIN_PASSWORD=admin-secret ghcr.io/kgvicente/mqtt-gateway:latest
0 DB
无需部署 PostgreSQL、MySQL 或 Redis 数据库
Java 25
基于 Quarkus 3.39、Java 25 虚拟线程与 Mandrel 原生编译
Built-in UI
内置 Web 控制台与实时后端健康探测位于 /gateway/
AGPL-3.0
100% 开源透明架构,遵循 AGPL-3.0 协议
内置运维面板

开箱即用的 /gateway/ Web 控制中心。

完全不需要额外搭建 Grafana、Kibana 或数据库集群。在内置控制台中即可直观监测健康探针、分析 P95 延迟分布并实时审计鉴权决策日志。

http://localhost:8085/gateway/
MQTT Gateway 管理面板,显示后端路由、状态和健康概览
实时监测后端服务存活状态,支持一键连通性探测与免重启热更新路由调度。 /gateway/#backends
MQTT Gateway 路由详情,显示延迟图表、探测历史和 ACL 规则
毫秒级延迟统计、P95 峰值曲线、最近 24 次心跳柱状图与故障中断历史追踪。 /gateway/#detail
MQTT Gateway 主机健康状态,显示 CPU、内存、磁盘和网络指标
原生 Linux 主机遥测:CPU 使用率、内存与 Swap 仪表盘、磁盘 I/O 及网络吞吐统计。 /gateway/#server-view
MQTT Gateway 管理控制台操作演示动画
实时演示在线路由管理、一键健康测试与深浅色主题无缝切换。 Interactive preview
架构演进与革新

无需再维护脆弱的 Broker 专有插件。

通过 C、Erlang 或 Lua 编写的专有插件将 Broker 与数据库强绑定,容易引发单点故障与升级灾难。MQTT-GATEWAY 将所有鉴权解耦为标准 HTTP。

与 Broker 二进制强耦合

高耦合且脆弱

Mosquitto 的 C 插件、EMQX 的 Erlang 钩子以及 VerneMQ 的 Lua 脚本需要单独编译维护,且每次升级 Broker 都可能引发崩溃。

  • 每种 Broker 及其特定版本都需要单独编译适配插件
  • Broker 进程直连核心数据库,存在严重安全与性能瓶颈
  • 修改路由规则或后端目标必须重启整个 Broker 集群

纯 HTTP Webhook 干净解耦

HTTP 干净解耦

所有 Broker 统一向 8085 端口的 MQTT-GATEWAY 发送 Webhook。网关负责归一化数据并转发至您现有的业务后端。

  • Mosquitto、EMQX 和 VerneMQ 统一遵循相同的 REST 规范
  • 无需配置任何外部数据库,采用本地原子化安全存储
  • 通过 Web 后台或 API 在线动态调整路由,无需重启网关
极简 3 步工作流

请求在网关中的流转全过程。

当 IoT 设备发起连接或发布消息时,MQTT-GATEWAY 通过您的 REST 服务进行毫秒级鉴权与响应。

Broker 触发 Webhook

客户端连接至 Mosquitto、EMQX 或 VerneMQ。Broker 自动向 8085 端口发送 HTTP 认证或 ACL 请求。

前缀智能匹配与分发

网关根据客户端 ID 或主题前缀(如 core_* 与 tel_*),通过 Java 25 虚拟线程高效分发调用。

业务后端返回鉴权结果

您的业务服务验证凭据后,直接返回标准简洁的 JSON:{"result": "allow"}。

// POST /api/v1/auth (Dispatched to your backend)
// Optional header: X-EMQX-API-KEY: your-backend-secret
{
  "clientid": "core_sensor_098",
  "username": "fleet_device_prod",
  "password": "••••••••••••",
  "ipaddress": "192.168.1.104",
  "protocol": "MQTT"
}
// HTTP/1.1 200 OK (From your backend to MQTT-GATEWAY)
{
  "result": "allow",
  "is_superuser": false
}

// Valid result values: "allow", "deny", or "ignore"
# Initial configuration (or manage live at /gateway/)
gateway:
  timeout-ms: 2000
  global-topics: [heart, ping]
  auth:
    - prefixes: [core_, android_, ios_, web_]
      url: http://core-backend:8090/api/v1/emqx/auth
    - prefixes: [tel_]
      url: http://telemetry-backend:8080/api/v1/emqx/auth
  acl:
    - prefixes: [v1/, core/]
      url: http://core-backend:8090/api/v1/emqx/acl
核心能力

极简运维,专为生产环境稳定性打造。

融合 Quarkus 原生二进制的高性能与生产运维所需的实时可观测性。

零外部数据库依赖

纯自主运行,内置本地安全原子存储与内存缓存。网关层完全不需要部署或维护 MySQL、PostgreSQL 或 Redis。

内置 Web 管理控制台

直接访问 /gateway/ 查看在线后端健康状态、动态调整路由规则,并实时监控访问决策审计日志。

热更新在线路由调度

通过 REST Admin API 或控制台在线添加、暂停或编辑后端路由,零 Downtime,不中断在线 MQTT 流量。

主动健康探测与故障追踪

通过虚拟线程每 30 秒自动探测后端存活状态,统计 P95 延迟,并在服务中断时自动记录详细故障时长与原因。

10 秒极速启动

单行命令即可快速上线运行。

从 GitHub Container Registry 获取多架构容器镜像,或直接使用 Docker Compose 启动全套集成测试环境。

# Run MQTT-GATEWAY on port 8085
docker run -d \
  --name mqtt-gateway \
  -p 8085:8085 \
  -e GATEWAY_ADMIN_PASSWORD=admin-secret \
  ghcr.io/kgvicente/mqtt-gateway:latest

# Open the admin panel at http://localhost:8085/gateway/
# docker compose up --build --wait
# Spins up the gateway, demo backend, and Mosquitto with automated tests
git clone https://github.com/kgvicente/mqtt-gateway.git
cd mqtt-gateway
docker compose up --build --wait

# Open http://localhost:18085/gateway/ (admin / local-demo-admin-2026)
# Check gateway readiness and liveness
curl http://localhost:8085/q/health

# Response:
{
  "status": "UP",
  "checks": []
}
企业级部署与 AGPL-3.0 兼容性说明: MQTT Gateway 作为完全独立的网络代理守护进程通过标准 HTTP 运行。接入您的自研业务后端或私有设备集群不会导致您的核心业务代码受到 AGPL 传染。

需要更详尽的技术规范与底层参数?

查阅官方 GitHub 代码仓库与开发文档,获取完整接口参数、Broker 适配器与架构说明。

进入 GitHub 官方文档 →