You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询mosquitto中已被客户端订阅的MQTT主题?

Mosquitto查询当前已订阅主题列表的实现方法

可以直接查询到mosquitto broker的所有活跃订阅主题,适配不同使用场景的常用方法如下:

方法1:通过$SYS系统主题查询(适合业务逻辑集成)

Mosquitto默认内置了$SYS层级的系统主题,实时记录broker的运行状态:

  • 你只需在微控制器或者你的控制客户端上订阅$SYS/broker/subscriptions/#主题,就能实时获取当前所有存在订阅者的主题列表,返回内容会包含每个主题的订阅客户端数量、QoS等级等信息
  • 该主题默认更新间隔为10秒,如果你需要更高的实时性,可以修改mosquitto配置文件中的sys_interval参数(单位为秒),调整到你需要的更新频率即可。

方法2:终端命令行直接查询(适合调试、手动查询)

如果你可以直接操作运行mosquitto的树莓派终端,执行以下命令即可一次性拉取所有活跃订阅主题:
mosquitto_sub -v -t '$SYS/broker/subscriptions/#' -C 1
参数说明:

  • -v 同时输出主题名称和对应消息内容
  • -C 1 收到1条返回消息后自动退出,无需持续监听

方法3:动态安全插件查询(适合大量客户端的生产场景)

如果你后续要接入大量动态订阅的客户端,需要更稳定的程序化查询能力,可以开启mosquitto的动态安全插件:

  1. 编辑mosquitto配置文件,添加如下配置启用插件:
plugin /usr/lib/mosquitto_dynamic_security.so
plugin_opt_config_file /var/lib/mosquitto/dynamic-security.json
  1. 重启mosquitto服务后,你可以直接调用插件的控制指令获取结构化的订阅列表,不需要额外解析$SYS主题的返回内容,更适合嵌入到自动化业务逻辑中。

注意:如果你的mosquitto开启了ACL访问控制,需要先给用于查询的客户端开放$SYS主题或动态安全插件的访问权限,否则会查询失败。

你拿到活跃订阅列表后,仅向列表内存在的主题发布消息,即可完全避免无意义的流量消耗,完美匹配你的使用需求。

内容的提问来源于stack exchange,提问作者kubiej21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 12:00:04