节点桥接 (Bridge)

EMQ 节点间桥接

EMQ 消息服务器支持多节点桥接模式互联:

              ---------                     ---------                     ---------
Publisher --> | Node1 | --Bridge Forward--> | Node2 | --Bridge Forward--> | Node3 | --> Subscriber
              ---------                     ---------                     ---------

节点间桥接与集群不同,不复制主题树与路由表,只按桥接规则转发 MQTT 消息。

EMQ 节点桥接配置

假设在本机创建两个 EMQ 节点,并创建一条桥接转发全部传感器(sensor)主题消息:

目录 节点 MQTT 端口
emqttd1 emqttd1@127.0.0.1 1883
emqttd2 emqttd2@127.0.0.1 2883

启动 emqttd1, emqttd2 节点:

cd emqttd1/ && ./bin/emqttd start
cd emqttd2/ && ./bin/emqttd start

emqttd1 节点上创建到 emqttd2 桥接:

$ ./bin/emqttd_ctl bridges start emqttd2@127.0.0.1 sensor/#

bridge is started.

$ ./bin/emqttd_ctl bridges list

bridge: emqttd1@127.0.0.1--sensor/#-->emqttd2@127.0.0.1

测试 emqttd1–sensor/#–>emqttd2 的桥接:

#emqttd2节点上

mosquitto_sub -t sensor/# -p 2883 -d

#emqttd1节点上

mosquitto_pub -t sensor/1/temperature -m "37.5" -d

删除桥接:

./bin/emqttd_ctl bridges stop emqttd2@127.0.0.1 sensor/#

mosquitto 桥接

mosquitto 可以普通 MQTT 连接方式,桥接到 emqttd 消息服务器:

             -------------             -----------------
Sensor ----> | mosquitto | --Bridge--> |               |
             -------------             |      EMQ      |
             -------------             |    Cluster    |
Sensor ----> | mosquitto | --Bridge--> |               |
             -------------             -----------------

mosquitto.conf

本机 2883 端口启动 emqttd 消息服务器,1883 端口启动 mosquitto 并创建桥接。

mosquitto.conf 配置:

connection emqttd
address 127.0.0.1:2883
topic sensor/# out 2

# Set the version of the MQTT protocol to use with for this bridge. Can be one
# of mqttv31 or mqttv311. Defaults to mqttv31.
bridge_protocol_version mqttv311

rsmb 桥接

本机 2883 端口启动 emqttd 消息服务器,1883 端口启动 rsmb 并创建桥接。

broker.cfg 桥接配置:

connection emqttd
addresses 127.0.0.1:2883
topic sensor/#