社区版本三节点集群,开启session持久化后topic分配不了节点

使用docker模式搭建三节点集群,开启session持久化,使用5.8.0版本客户端连接发现不能接受不到消息,排查发现topic未分配节点,导致查不到这个topic 但是客户端链接中显示订阅了这个topic 降级到5.7.2之后发现还是无法分配节点,但是可以收到消息,topic clean session 为 false 这种无法分配节点的topic 在使用上是否有问题?是否是我搭建的问题

topic 分配不了节点是什么意思?MQTT 主题不需要手动创建,客户端只需要订阅主题就能收到该主题的消息。

你可以打开 emqx 的 debug 日志,看一下消息的交互流程:


在订阅管理中可以查看topic的信息 有些有节点分配 有些没有分配节点

那说明订阅者没有连接到某些节点上去。只有订阅者在的节点才会有路由信息,才能在这个界面上查看到,这是正常的,但消息仍然会被转发到对应的节点,然后投递给订阅者。

持久会话的订阅者如果离线,消息会存储在它在 emqx 的 session 中,等它重新上线之后会推送过去。