34 lines
649 B
Go
34 lines
649 B
Go
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
|
|
}
|