Я использую клиента paho mqtt в GO для подключения к брокеру. Некоторое время все работает нормально, в течение которого я могу публиковать темы и прослушивать любую подписку. Через некоторое время клиент теряет соединение с брокером, без видимой причины с этим журналом:
[MQTT] ERROR: 2018/09/04 17:31:30 [net] outgoing stopped with error write tcp IP1 -> IP2: write: broken pipe
[MQTT] ERROR: 2018/09/04 17:31:30 [net] logic received from error channel, other components have errored, stopping
Я подключаюсь к брокеру следующим образом:
opts := mqtt.NewClientOptions().
AddBroker(broker).
SetClientID(fmt.Sprintf("%s-%v", ProgramName, time.Now().Unix())).
SetUsername(username).
SetPassword(password).
SetOrderMatters(true)
if tlsConfig != nil {
opts.SetTLSConfig(tlsConfig)
}
pahoClient := mqtt.NewClient(opts)
client = &DefaultMQTTClient{
c: pahoClient,
subscribeQoS: subscribeQoS,
publishQoS: publishQoS,
name: name,
log: Log.WithPrefix("mqtt").WithFields(logrus.Fields{
"name": name,
"broker": broker,
}),
}
client.Log().Debug("connecting to mqtt broker")
if err = client.Connect(); err != nil {
err = client.Log().Trace(err, "failed to connect to mqtt broker")
return
}
client.Log().Info("established connection with mqtt broker")
И версия Paho, которую я использую, - 1.0.0. Любая подсказка приветствуется!