本地mqtt(mqtt1),使用tcp 1884端口
iotdb内置mqtt(mqtt2),使用tcp 1883端口
通过mqtt1桥接到mqtt2
发送消息每次都会命中2次
您好,请详细描述一下环境,有几个服务(EMQX iotdb ),各个桥接的方向,以及 mqtt1 和 mqtt2 分别代表什么,是 mqtt broker service 还是 mqtt client.
你好,感谢支持!
这里有两个mqtt server,一个是iotdb内置的,端口1883(mqtt2),另一个通过emq启动的,我改了端口1884(mqtt1),在emq web控制台配置桥接到1883端口的mqtt,然后再用Java客户端连接1884端口的mqtt server写入到topic(root/xxs/dev/fan),桥接自动转发到1883端口的mqtt server(topic是root.xxs.fan,自定义了消息格式)
然后在桥接的命中统计里就发现,每次发送一条消息,都会命中两次
emqx-listen1884 ======= mqtt-bridge =====⇒ iotdb:listen1883
↑(publish)
Java Client
是“命中” 和 “执行成功” 都会 +2 么。
我注意到截图中框选了 “命中” 和 “发送成功”,这是两个独立的概念。
“命中” 只代表在消息流转过程中,需要执行一次 mqtt bridge。
“发送成功”属于具体执行结果的一种,其他的 “发送失败”,“已发送未确认”,“已重试” ……
是的,都会+2。
结构是你图里这样的
规则引擎怎么配置的呢?有抓包看过确实是有两条消息发送给 1884 端口么
已经解决了,观察了下emq的日志,发现收到源topic消息之后,原地publish了一次
然后调整了下桥接的topic,源消息topic保持不变,仍然是root/xxs/dev/fan,把桥接的中转topic改成了
root/xxs/dev/fan1
这两个topic不能一致,否则就是外部写入一次,桥接转一次,变成两次
感谢支持