客户端连接还在,订阅被取消了是什么原因?

问题求助:

  • emqx版本信息:[5.0.23],操作系统centos7

我使用golang的cli进行客户端订阅连接,接收设备的心跳数据后写入redis。
最近出现几次客户端连接还在,主题订阅被取消了的情况。
请问下这是什么原因造成的?
有没有什么办法设置订阅取消了的时候可以重新订阅?

我能想到订阅被取消只有两种情况:

  1. 客户端掉线重连了,重新连上来之后没有再次订阅。客户端也没有保持会话(clean_session = false 为持久会话),所以订阅在客户端下线的时候就丢了。

  2. 客户端主动发起了取消订阅请求。

你可以使用日志追踪功能,追踪某个 clientid 的日志,会看到究竟是掉线重连了,还是主动取消订阅的:日志追踪 (Trace) | EMQX 文档

请问下如何使客户端掉线重连后再次订阅主题呢?我的客户端ID是不固定的,所以没设置clean_session = false。

每次上线都订阅一次。