golang版sdk设置的断连、重连回调函数偶尔触发失效

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的错误,重连的回调函数也会相应触发