Menu

#6431 Placeholder ${node} for subscription.1.topic variable in bridge configuration does not work.

open
nobody
2022-02-14
2021-12-12
Anonymous
No

Originally created by: dbleul
Originally owned by: gsychev

Description

Placeholder ${node} for subscription.1.topic variable in bridge configuration does not work.

Your environment

Docker: 20.10.11
EMQX Image: emqx/emqx:4.3.10

Steps to reproduce

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

Expected behaviour

In the Remote Broker dashboard I see the subscription bridge/broker@hs1/comm_in/# for the client.

Actual behaviour

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

Discussion

  • Anonymous

    Anonymous - 2021-12-12

    Originally posted by: zmstone

    Hi @dbleul
    we only support ${node} substitution for this config bridge.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/bar

    Nonetheless, I do see this as a valid requirement, so the remote broker does not have to support shared-subscription.

     
  • Anonymous

    Anonymous - 2022-02-09

    Originally posted by: gsychev

    I'll try to take this one

     
  • Anonymous

    Anonymous - 2022-02-14
     

Log in to post a comment.

MongoDB Logo MongoDB