自动订阅的参数修改没有生效



在自动订阅中配置了参数但是在订阅管理中没有生效。客户端重新连接也不管用。Qos参数重新连接可以生效但是其他三个参数不行

用的5.3版本

哎?我自己没有复现这个问题。你的客户端是不是自己也进行了订阅?

你把 debug 日志打开,看客户端有没有发送 SUBSCRIBE 上来。

发送过了。我用的是java连接器。不调用subscribe方法发送一条SUBSCRIBE ;调用了就发送两条


您好,这个Subsceibe应该是代理订阅的。请问为什么代理订阅页面修改了配置。客户端重新连接以后配置没有改变呢?

是的,这个 subscribe 之前没有日志说明有收到 subscribe 报文。所以这个订阅是代理订阅触发的。
“重连以后配置没有改变”我这里也没有复现出来,看一下是不是客户端自己重新发了 SUBSCRIEB 报文,把代理订阅的订阅选项覆盖掉了。

你可以在代理订阅中配置一个客户端 永远不可能 发送的主题来验证一下,例如配置一个 test/auto/sub 这样的主题。

您好。我是想测试一下代理订阅的No Local,Retain as Published和Retain Handling。然后就发现怎么改都没有效果。就看了一眼订阅管理的页面,然后发现订阅管理页面的这三个参数和代理订阅页面的不一致。


Qos倒是可以正常更新。我使用日志追踪看了一下客户端发送的报文,报文应该是没啥问题,有两条SubScribe

你截图中的 47 行和 48 行,不是客户端发送的 SUBSCRIBE 报文。,是代理订阅为客户端触发了订阅行为。并没有实际的 MQTT SUBSCRIBE 报文传输。

类似这里红框中有 mqtt_packet_received, PACKET xxx 才是客户端发送的 SUBSCRIBE 报文。

注意到你截图中使用了 MQTT 3.1.1
no_localretain_as_published 选项只对 MQTT 5.0 客户端生效。
所以你更改代理订阅的 qos 之后,重新连接发现订阅 qos 会改变。但 nl 和 rap 仍然为 false

感谢 :handshake:换成5.0后我的问题确实解决了。但是咱们5.3版本的文档,java连接器给的依赖还是mqtt3的

再请教您一个问题:我们用的是emqx5.3。咱们这边更推荐用MQTT5.0连接吗?

功能上来说,MQTT 5.0 当然是功能更为丰富的。
但也需要权衡升级协议版本所带来的收益和开发维护成本是否值得。

可以参考下这篇 blog:
MQTT 5:7 项新功能以及迁移注意事项