package amqp import ( "log" "os" "strconv" "sync" "system-trace/core/utils" "time" "github.com/wagslane/go-rabbitmq" ) func InitConn() *rabbitmq.Conn { var conn *rabbitmq.Conn if recon, err := strconv.Atoi(os.Getenv("RMQ_RECONNECT_INTERVAL")); err == nil { conn, err = rabbitmq.NewConn( os.Getenv("RMQ_URL"), rabbitmq.WithConnectionOptionsLogging, rabbitmq.WithConnectionOptionsReconnectInterval(time.Duration(recon)*time.Millisecond), ) if err != nil { log.Println("[AMQP]", err) wg := sync.WaitGroup{} wg.Add(1) to := time.Second * 3 utils.WaitTimeout(&wg, to) return InitConn() } } return conn }