package data import ( c "git.inspur.com/sbg-jszt/cfn/cfn-schedule/config" "git.inspur.com/sbg-jszt/cfn/cfn-schedule/pkg/log" "github.com/nats-io/nats.go" "time" ) var Nc *nats.Conn func initNats() { var err error // 此种链接方式在Ubuntu桌面版上报错:dial tcp: missing address //url := fmt.Sprintf("nats://%s:%s@%s", c.Config.Nats.User, c.Config.Nats.Password, c.Config.Nats.Url) //Nc, err = nats.Connect(url) opts := []nats.Option{nats.Name("NATS Sample Publisher")} opts = append(opts, nats.UserInfo(c.Config.Nats.User, c.Config.Nats.Password)) log.Infof("Nats connect url: %s", "nats://"+c.Config.Nats.Url) log.Infof("Nats connect options: %v", opts) Nc, err = nats.Connect("nats://"+c.Config.Nats.Url, opts...) if err != nil { log.Errorf("连接nats失败:%s, %s, %s", c.Config.Nats.Url, c.Config.Nats.User, c.Config.Nats.Password) panic("Nats connection failed:" + err.Error()) } go func() { defer func() { if r := recover(); r != nil { log.Errorf("recover check nats connection: %v", r) } }() const interval = time.Minute * 2 ticker := time.NewTicker(interval) for _ = range ticker.C { if !Nc.IsConnected() { Nc, _ = nats.Connect("nats://"+c.Config.Nats.Url, opts...) } } }() }