什么情况下部分主题的消息将不再同步某个节点或发送某个客户端

环境信息

  • EMQX 版本:4.3.10
  • 操作系统及版本:
  • 其他

问题描述

现象1:服务运行一段时间后,客户端接收不到某些主题的消息,18083端口页面显示客户端仍旧订阅该主题,换个方式订阅就可以接收到(如主题/aaa/bbb/bbbb,原使用/aaaa/+/bbbb订阅接收不到,/+/+/bbbb就可以接收到,或者/aaa/bbb/bbbb也可以接收到)

现象2:
emqx集群,消息主题/aaa/bbb/bbbb发送到节点1,在节点2上订阅/+/bbb/bbbb,初始可以接收到消息,一段时间后接收不到消息,18083端口显示订阅正常,加上订阅/+/+/bbbb就可以接收到该主题消息了,订阅/aaa/bbb/bbbb也能接收到

看描述是个很奇怪的问题…能再调查下:

  1. 开启跟踪日志,看看不能收到消息的那个客户端都有哪些日志出来
  2. 当不能收到消息是,在 Dashboard 上面看看 主题(Topic)里面这一栏,看下是是否有 Topic + Node节点2 这个映射还在不在。

这个是运行一段时间之后发生的,或者集群脑裂后再次集群后发生,这两天没有出现,待出现我再看下主题映射,谢谢

:+1: 集群完后,有次路由同步的过程,被重启的节点会直接丢弃它原有的数据。可以关注看看映射表,不排除是这个原因导致的

集群中某个节点重启后恢复集群,目前出现上述情况,在Dashboard 上查看主题,各个节点的数量不一致,这个是什么原因造成,有没有办法避免,或者有什么办法解决

麻烦提供下集群的方式和是怎么重启的。“查看主题,各个节点的数量不一致” 具体是指哪里不一致呢?

集群方式 static 4个节点
由于网络问题造成集群脑裂,后来其中一个节点重启,集群恢复,从Dashboard上查看TOPIC,从每个节点的Dashboard页面查看topic,数量不一致,查看方式见图

请问有没有路由手动同步的接口

各个节点的主题确实是不一致的…这里是路由表,表示的是 Topic 在那个节点有被订阅。
所以不一致是不会有问题的