如何有条件地在两个桥接 MQTT 代理之间转发消息?

How to conditionally forward messages between two bridged MQTT broker?

我在站点 A 有一个 MQTT Broker (mosquitto),在云端有另一个代理(mosquitto 或 RabbitMQ)。为了将数据转发到云端,我计划将它们桥接起来并使用 TLS 来确保数据安全。

  1. 在站点 A,软件通过 MQTT 进行内部通信,我不希望将敏感数据发送到云端。 (例如:带有 "user/password" 的主题)

  2. "user/age"、"user/gender"等非敏感信息发送到云端进行统计分析。

如何将站点 A 的代理配置为桥接并有条件地仅将某些 topic/message 转发到云代理(同时保持内部消息传递)?

mosquitto 中没有否定匹配或编程匹配,因此您有 2 个选项:

  1. 完全分离敏感数据的主题树,并使用通配符桥接配置将所有非敏感数据发送到远程代理

    • user/age
    • user/gender
    • security/password

      connection cloud
      address cloud.broker.foo
      topic user/# out
      
  2. 为您希望桥接的每个主题添加单独的主题桥接配置。

    connection cloud
    address cloud.broker.foo
    topic user/age out
    topic user/gender out