emq版本:5.8.5
linux:centos7
现象场景:车端发送登录报文到emq的up/车辆vin的topic,平台收到登录报文后处理完成后发送消息到down/车辆vin的topic,车端订阅到down的topic。目前很少部分车辆订阅了topic后无法消费到消息,能确认平台已经推送了消息到down的topic,在emq上做了日志追踪,根据客户端id和topic,做了日志追踪。相关信息截图如下
看日志是推送了的。也没有异常说消息丢失,如果是部分没有收到,那大概率是你的客户端代码有问题,我猜不到其它的了。你可以在客户端那捞捞日志自己分析一下。
我早上用mqttx客户端订阅了这个down的topic,只收到一条消息,但是其他同事同一时间也是用mqttx收到了平台返回的所有topic ![]()
有个问题咨询下,我这边有个topic down,我emq有6台机器然后前面有个haproxy节点,平台通过haproxy推到这个down这个topic,假设落到1.1.1.1这台机器,第二次平台推消息,还是推到down这个topic,我们这边用日志追踪发现落到1.1.1.2了,订阅这个topic的客户端也通过haproxy,然后这种情况下客户端有 一定的概率订阅不到消息,请问这种情况该如何解?或者emq在分配 topic消息的时候遵循何种寻址方式?
发布端连的 A 节点,订阅端连的 B 节点,。只要 AB 是一个集群的。消息都是能到的。
不然就是重大 bug。
我这边复现了这个问题,我的haproxy是9001端口,和后端的6台emq建链使用最小连接数的算法,后面6台emq的权重一致,我们有个别的几辆问题车,在平台发布消息到down/车vin的topic上,这个topic我用mqttx订阅,订阅haproxy的9001端口和订阅后端新扩容的2台机器(103和104),共计3个订阅,会出现几种可能,
- 3个都收到,haproxy、2台emq的订阅都能收到,此时追踪日志显示topic的日志在前面4台机器
- 只有haproxy和其中13可以收到,追踪日志发现topic的日志在103节点
- 只有1台emq可以,haproxy和103不可以收到,追踪日志发现topic的日志在104节点
我的集群6个节点都是core,没有replica,我在考虑是否是因为新扩容的节点问题,但是目前没有明确的思路排查。。
我复盘了下我这边的emq集群的配置,我们的集群6台机器,前面4台是先搭建的集群,后面两台是后加入的集群,目前我发现,后面加入集群的机器,是从前面4台的其中一台scp emq的整个安装目录之后修改配置文件后启动的,所以在data下面的mnesia目录下有两个节点的信息,想问下这种情况是否会出现上述这种偶发后加入节点的机器收不到消息的情况?
一般不会的
你改了节点名,节点名叫什么,他就只会用对应的目录 ,别一个是没有用的。
换句话说就是:节点启动后只会用对应节点名的 mnesia 目录。
root_erl_pipes这个目录也是按照节点名字索引么。
我们计划下周一把后扩容的2个节点重新从新部署下在看下这个问题是否还会复现
目前把后加的两个节点从集群中leave掉,然后在用空的包修改name之后重新添加到集群后问题解决





