Timed out as no activity
client告诉emqx服务自己的接收buffer已满,不要再发送数据了。同理心跳包也不能发送了 ,emqx服务收不到心跳包,认为客户端已不存活,故主动断开了连接。
问题解决原则:Client 加快程序的处理速度
1、多线程处理 2、消息缓存起来
参考:https://blog.csdn.net/u012134942/article/details/103965155
连接数超过1000出现服务挂掉
解决办法最大句柄数问题: ulimit -u 100000 调整
参考网址:https://www.cnblogs.com/xiaoshahai/p/14718892.html
broker遇到问题重启,所有的 client端都得重连
connOpts.setAutomaticReconnect(true); //mqttClient.reconnect(); 方法会判断这个参数
connOpts.setConnectionTimeout(0); //防止 ERROR o.e.p.c.mqttv3.internal.ClientState - Timed out as no activity 错误
connOpts.setCleanSession(false); //服务端记录 session (自己手动重新subscribe ,可能设置为true也行)