从通道读取数据时golang进度挂起

时间:2017-10-11 15:31:51

标签: go rabbitmq

我必须写一个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)
            }
    }
}

```

任何人都可以帮我这个吗?提前谢谢!

0 个答案:

没有答案