我必须写一个rabbitmq重连接器,这就是我所说的: https://gist.github.com/svcavallar/be2d40953eaf27842cba2d46de9c1fb1
但是当我从频道rabbitCloseError
读取数据时,我的进展依然存在......我不知道什么是错的。
以下是我的代码:
```
logger.Infof("Starting message listenner...")
var rabbitErr *amqp.Error
var ch *amqp.Channel
// setup a reconnector
for {
rabbitErr = <-rabbitCloseError // hanging here!!
if rabbitErr != nil {
logger.Infof("Reconnecting")
_ = l.rabbitClient.InitConn()
}
if ch == nil {
logger.Infof("Creating channel")
ch, _ = l.rabbitClient.RabbitmqConn.Channel()
reportQ, err := ch.QueueDeclare(
"filereport", // name
true, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
l.rabbitClient.QArguments, // arguments
)
if err != nil {
logger.Errorf("Declare queue report failed, error: %+v", err)
}
// set prefetch one
_ = ch.Qos(1, 0, false)
msgs, err := ch.Consume(
reportQ.Name, // queue
"", // consumer
false, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil, // args
)
if err != nil {
logger.Errorf("Decare consumer failed, error: %+v", err)
}
go l.ConsumeMsgs(msgs)
}
}
}
```
任何人都可以帮我这个吗?提前谢谢!