我测试使用指定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?
客户端是可以通过通配符订阅主题的。是不是可以优化一下桥接也支持,这时候填一个主题就行,不用remote_topic和local_topic?