Parcourir la source

add mq connection lost handler on server

(cherry picked from commit c82918ad3564098487d5ac4a223ee5d95e76ac3e)
abhishek9686 il y a 1 an
Parent
commit
7f704ee80d
1 fichiers modifiés avec 8 ajouts et 0 suppressions
  1. 8 0
      mq/mq.go

+ 8 - 0
mq/mq.go

@@ -9,6 +9,7 @@ import (
 	mqtt "github.com/eclipse/paho.mqtt.golang"
 	"github.com/gravitl/netmaker/logger"
 	"github.com/gravitl/netmaker/servercfg"
+	"golang.org/x/exp/slog"
 )
 
 // KEEPALIVE_TIMEOUT - time in seconds for timeout
@@ -90,6 +91,13 @@ func SetupMQTT() {
 		opts.SetOrderMatters(false)
 		opts.SetResumeSubs(true)
 	})
+	opts.SetConnectionLostHandler(func(c mqtt.Client, e error) {
+		slog.Warn("detected broker connection lost", "err", e.Error())
+		c.Disconnect(250)
+		slog.Info("re-initiating MQ connection")
+		SetupMQTT()
+
+	})
 	mqclient = mqtt.NewClient(opts)
 	tperiod := time.Now().Add(10 * time.Second)
 	for {