Originally created by: dbleul
Originally owned by: gsychev
Placeholder ${node} for subscription.1.topic variable in bridge configuration does not work.
Docker: 20.10.11
EMQX Image: emqx/emqx:4.3.10
Here are my bridge configuration:
bridge.mqtt.bridge_comm.address = 192.168.50.82:1883
bridge.mqtt.bridge_comm.proto_ver = mqttv3
bridge.mqtt.bridge_comm.start_type = auto
bridge.mqtt.bridge_comm.bridge_mode = true
bridge.mqtt.bridge_comm.clientid = bridge_${node}comm
bridge.mqtt.bridge_comm.clean_start = true
bridge.mqtt.bridge_comm.username = user
bridge.mqtt.bridge_comm.password = passwd
bridge.mqtt.bridge_comm.forwards = comm/#
bridge.mqtt.bridge_comm.forward_mountpoint = bridge/${node}/
_bridge.mqtt.bridge_comm.subscription.1.topic = bridge/${node}/comm_in/#
bridge.mqtt.bridge_comm.subscription.1.qos = 1
bridge.mqtt.bridge_comm.receive_mountpoint = bridge_in
bridge.mqtt.bridge_comm.ssl = off
bridge.mqtt.bridge_comm.cacertfile = etc/certs/cacert.pem
bridge.mqtt.bridge_comm.certfile = etc/certs/client-cert.pem
bridge.mqtt.bridge_comm.keyfile = etc/certs/client-key.pem
bridge.mqtt.bridge_comm.keepalive = 60s
bridge.mqtt.bridge_comm.tls_versions = tlsv1.3,tlsv1.2,tlsv1.1,tlsv1
bridge.mqtt.bridge_comm.reconnect_interval = 30s
bridge.mqtt.bridge_comm.batch_size = 32
bridge.mqtt.bridge_comm.max_inflight_size = 32
bridge.mqtt.bridge_comm.queue.replayq_dir = data/replayq/emqx_bel_comm_bridge/
bridge.mqtt.bridge_comm.queue.replayq_seg_bytes = 10MB
bridge.mqtt.bridge_comm.queue.max_total_size = 5GB
In the Remote Broker dashboard I see the subscription bridge/broker@hs1/comm_in/# for the client.
In the Remote Broker dashboard I see the Subscription placeholder unresolved in plain text bridge/${node}/comm_in/#
Have I forgotten important information?
Gruss Dennis
Originally posted by: zmstone
Hi @dbleul
we only support
${node}substitution for this configbridge.mqtt.bridge_comm.clientid, but not for others.ref:
https://github.com/emqx/emqx/blob/v4.3.10/apps/emqx_bridge_mqtt/src/emqx_bridge_mqtt.erl#L196-L198
This is to assign different client ids for MQTT clients running in different nodes in the EMQ X cluster so they can connect to the same remote node concurrently without kicking each other.
The clients in EMQ X nodes can share-subscribe a remote topic, e.g.
$share/emqx-group-1/comm_in/#So you do not have to distribute the load in the remote broker, but publish messages to
comm_in/foo/barNonetheless, I do see this as a valid requirement, so the remote broker does not have to support shared-subscription.
Originally posted by: gsychev
I'll try to take this one