diff --git a/mq/mq.go b/mq/mq.go index 81417266..a5bbd961 100644 --- a/mq/mq.go +++ b/mq/mq.go @@ -156,9 +156,17 @@ func SetupMQTT() mqtt.Client { opts := mqtt.NewClientOptions() broker := servercfg.GetMessageQueueEndpoint() opts.AddBroker(broker) - client := mqtt.NewClient(opts) - if token := client.Connect(); token.Wait() && token.Error() != nil { - log.Fatal(token.Error()) + tperiod := time.Now().Add(10 * time.Second) + for { + if token := client.Connect(); token.Wait() && token.Error() != nil { + logger.Log(2, "unable to connect to broker, retrying ...") + if time.Now().Afer(tperiod) { + log.Fatal(0, "could not connect to broker, exiting ...", token.Error()) + } + } else { + break + } + time.Sleep(2 * time.Second) } logger.Log(2, "connected to message queue", broker) return client diff --git a/netclient/functions/daemon.go b/netclient/functions/daemon.go index c6439bd8..5d6400de 100644 --- a/netclient/functions/daemon.go +++ b/netclient/functions/daemon.go @@ -13,6 +13,7 @@ import ( "time" mqtt "github.com/eclipse/paho.mqtt.golang" + "github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/netclient/config" "github.com/gravitl/netmaker/netclient/local" @@ -70,8 +71,17 @@ func SetupMQTT(cfg *config.ClientConfig) mqtt.Client { } opts.SetDefaultPublishHandler(All) client := mqtt.NewClient(opts) - if token := client.Connect(); token.Wait() && token.Error() != nil { - log.Fatal(token.Error()) + tperiod := time.Now().Add(10 * time.Second) + for { + if token := client.Connect(); token.Wait() && token.Error() != nil { + logger.Log(2, "unable to connect to broker, retrying ...") + if time.Now().Afer(tperiod) { + log.Fatal(0, "could not connect to broker, exiting ...", token.Error()) + } + } else { + break + } + time.Sleep(2 * time.Second) } return client }