Mosquitto桥接仅转发指定主题不生效 如何配置正确的过滤规则
Mosquitto桥接仅转发指定主题配置方案
问题根因
你遇到的全量消息同步问题,本质是本地客户端的订阅请求被默认转发到了远程Broker:你仅配置了远程到本地的in方向主题规则,但未限制本地到远程的out方向请求。当你在本地订阅#通配符时,这个订阅请求会被桥接同步到远程节点,远程节点会将全量主题消息推送给桥接连接,最终你在本地就能收到所有消息,和已配置的in方向规则无关。
修正后配置
在原桥接配置段补充规则,禁用out方向的默认订阅同步与消息转发,完整配置如下:
connection bridge address remote.com notifications false # 开启干净会话,避免远程残留旧的订阅信息 cleansession true # 明确配置in方向(远程→本地)仅允许指定主题 topic test/1 in 0 # 禁止所有out方向(本地→远程)的消息、订阅转发,无上行需求可保留该规则 topic # out 2 '' '' no
扩展配置说明
- 如需转发远程指定主题树下的所有消息,直接修改
in方向规则的主题匹配符即可,例如要转发test/开头的所有主题,将对应规则改为:topic test/# in 0 - 如有需要将本地指定主题上传到远程的需求,可单独添加
out方向规则,不会影响现有下行限流逻辑,例如仅允许本地local/send主题同步到远程:topic local/send out 0 - 配置修改后,可先执行
mosquitto -c /etc/mosquitto/mosquitto.conf -t校验配置语法合法性,校验通过后再重启Mosquitto服务生效。
内容的提问来源于stack exchange,提问作者Daniel D.
相关产品推荐
相关产品推荐

