桥接 mqtt 代理 hivemq 和 mosquitto

bridging mqtt brokers hivemq and mosquitto

我正在尝试在同一系统上桥接两个 MQTT 代理,HiveMQMosquittoHiveMQ 在端口 1884 上工作,Mosquitto1883 上工作 运行。但是,当我使用 mosquitto_pub 命令发布到端口 1883mosquitto 代理时,它不会显示在端口 1884 上(使用 MQTT.fx 作为客户端订阅端口 1884)

上的所有主题

这是我只为 mosquitto 代理配置了网桥。 当我也配置 HiveMQ 时,它只在 HiveMQ 命令 window 上显示 unable to connect to Bridge1, disconnected 消息。我已经包含了以下配置。有人请帮助。

mosquitto.config 文件中,我在 bridges 下完成了以下操作。

    connection hivemq
    address 127.0.0.1:1884 
    start_type automatic
    clientid clientno1
    notifications true

与此同时,我还编辑了 HiveMQ bridges.xml 文件以读取

<?xml version="1.0" encoding="UTF-8"?>
<bridges xsi:noNamespaceSchemaLocation="http://www.hivemq.com/bridges/bridge.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<bridge>
    <connectionName>Bridge1</connectionName>
    <addresses>
        <address>
            <host>localhost</host>
            <port>1883</port>
        </address>
    </addresses>
    <clientId>bridgeClient</clientId>
    <topicPatterns>
        <topicPattern>
            <topic>#</topic>
            <qos>1</qos>
            <direction>both</direction>
            <localPrefix>local/</localPrefix>
            <remotePrefix>remote/</remotePrefix>
        </topicPattern>
    </topicPatterns>
    <cleanSession>true</cleanSession>
    <idleTimeout>10</idleTimeout>
    <notificationsEnabled>true</notificationsEnabled>
    <tryPrivate>true</tryPrivate>

</bridge>

显示的图像是我在另一个系统上尝试相同过程时的结果。在这里,经纪人被桥接了。与我之前做的相比,唯一的区别是在我原来的系统上没有声明在 1883 上打开 ipv4 侦听套接字。这是问题吗?

您应该只需要在其中一个代理中配置网桥,为两个代理都配置网桥会导致问题,很可能是消息循环

对于您的 mosquitto 配置,您需要将 topic 行添加到您的 mosquitto 网桥,以便它知道向 hive 代理发送(和接收)哪些主题

有关主题指令的完整详细信息可以在 mosquitto.conf 手册页 (http://mosquitto.org/man/mosquitto-conf-5.html) 中找到,但基础知识是:

topic pattern [[[ out | in | both ] qos-level] local-prefix remote-prefix]

双向镜像所有主题

topic # both

桥接应仅在 publisher/client 端设置(在您的情况下为 mosquitto),在 Hivemq(服务器)上保留默认设置应该没问题

尝试更改您的 mosquitto.conf

connection bridge-mosquitto-to-hivemq
address 127.0.0.1:1884 
topic room1/# both 2 sensor/ myhouse/
bridge_protocol_version mqttv311
notifications true
cleansession true
try_private true

重启代理后,在 mosquitto 代理上,尝试在下面发布示例消息

mosquitto_pub -t sensor/room1/temperature -m '26.3'