1、emqx通过规则,flow设计器,检测客户端上下线。和通过订阅系统主题$SYS/brokers
有什么区别呢?
2、为什么有时候,客户段下线,我订阅的系统主题$SYS/brokers没有收到下线消息通知呢??
3、emqx有没有可以主动获取所有客户端主题的方式呢?查询到所有的在线客户端id。
-
规则+Flow设计和系统消息里的上线,在底层触发都是相同的。这两不同的地方在于处理,规则只会在本节点处理,每个节点各自己处理自己节点上的事件。而系统消息是触发后会发布一条消息出来,只要有订阅端订阅了,那么消息就会转发到这个客户端上;即如果只有一个客户端订阅,那么这个客户端会接收所有节点的这类事件。
-
这个需要具体看,例如 emqx 版本,操作步骤,日志等。如果按步骤确定收不到,那么可能是存在问题
3.没太理解。查询集群中所有的主题、和在线客户端的ID都是有 HTTP API的,可以参考:
大佬你好,我再补充一下。
为什么问这些问题,是因为,我定于的mqtt系统主题$SYS/brokers没有收到客户端下线消息。现在我通过api接口获取所有在线客户端/api/v5/clients。也可以解决这个问题。但是还是不清楚为什么,有时候会收不到客户端的下线通知。
因为我没有输出日志,我只能复述,出现这种情况是因为线上有一百多个客户端,有五六个客户端id相同产生冲突一直频繁上下线,导致了,其他正常的客户端没有发送正常的下线通知,还有其他业务主题订阅没有收到消息。(遇到不止一次)我下次打印日志。看看大佬们有没有遇到过这种情况,或者怎么查这个问题。