emqx5.1数据桥接topic可以使用通配符吗

我测试使用指定topic可以获取到数据,使用通配符好像不行

MQTT Bridge 原理是作为一个 MQTT Client,从 本地/远端 Broker 订阅指定的主题过滤器,然后将订阅到的消息发布到 远端/本地。

在订阅发布时的行为与普通的 MQTT 客户端完全一致。所以在桥接到远端(Egress bridge 的 Remote Topic) 或桥接到本地(Ingress bridge 的 Local Topic) 需要使用“主题名”(Topic Name),不能带通配符。

借楼问个问题:
桥接方式会清除topic中的数据吗?我们实际使用中发现会有数据堆积情况,因为我们除了桥接没有其他sub

“清除”是指在那个环节被清除?

如果是按照pub sub的方式,不应该sub方消费掉之后,topic的数据就被清理掉了吧。
现在我们发现通过桥接方式,emq中的dashbaod里发现只有入的消息数量,没有出的,导致队列堆积,oom了

 2023-07-24T05:19:18.851603+00:00 [error] Process:            <0.1474.1237> on node 'emqx@10.233.72.81', Context:            maximum heap size reached, Max Heap Size:      6291456, Total Heap Size:    7943681, Kill:               true, Error Logger:       true, Message Queue Len:  351, GC Info:            [{old_heap_block_size,2984878},{heap_block_size,4560232},{mbuf_size,398775},{recent_size,1317752},{stack_size,211},{old_heap_size,0},{heap_size,2072614},{bin_vheap_size,2947283},{bin_vheap_block_size,3735868},{bin_old_vheap_size,0},{bin_old_vheap_block_size,2180423}]

有完整一些的日志吗,<0.1474.1237> 这个进程不确定是哪个地方的。

没有了,清理掉了,我们的场景是这样的:
我们创建了10000个client,只pub消息,消息经过桥接存储到TDEngine中,会发现只有流入没有流出
类似于下图:


连接到7000左右,就连接失败,丢消息,pubsub超时

存储到数据库的 data birdge 不是 sub 消费的方式。
PUB/SUB 方式进行数据交换的只是 MQTT Bridge。

此外 流入/流出 只对连接在 EMQX 上的 mqtt 客户端进行统计。Data Bridge 有自己的 metrics

客户端是可以通过通配符订阅主题的。是不是可以优化一下桥接也支持,这时候填一个主题就行,不用remote_topic和local_topic?

1 个赞

客户端是可以通过通配符订阅主题的。是不是可以优化一下桥接也支持,这时候填一个主题就行,不用remote_topic和local_topic?