emqx broker版本为4.4.14,sdk库为github.com/eclipse/paho.mqtt.golang v1.3.5
- 以下为option设置:
opts.SetKeepAlive(60 * time.Second)
opts.SetConnectRetry(true).SetConnectRetryInterval(10 * time.Second)
opts.SetCleanSession(true)
opts.SetOnConnectHandler(mqttc.defaultOnConnectHandler())
opts.SetConnectionLostHandler(mqttc.defaultConnectionLostHandler())
opts.SetReconnectingHandler(mqttc.defaultReConnectHandler())
- 设置的失连回调函数为:
func (mqttc *Cmqttc) defaultConnectionLostHandler() mqtt.ConnectionLostHandler {
return func(client mqtt.Client, err error) {
logger.Logger.Errorf("MQTT Connect lost:%+v", err)
}
}
- 问题现象(偶现)
客户端正常运行一段时间后,mqtt连接断连,即dashboard上已看不到自己的clientID,但客户端程序没有正常打印该行日志,导致重连回调函数触发也失效,客户端程序还是一直在正常running,并没有奔溃重启等现象。正常的时候会打印出EOF的错误,重连的回调函数也会相应触发