登录
首页 >  Golang >  Go问答

RabbitMQ消费者在经过一段时间后数量归零

来源:stackoverflow

时间:2024-03-22 14:00:33 227浏览 收藏

作为 RabbitMQ 新手,我遇到一个问题,即队列消费者在运行一周后数量会自动归零,导致队列无法响应请求。为了解决这个问题,可以利用 github.com/streadway/amqp 提供的 conn.notifyclose(closenotify) 获取 chan,在 goroutine 中处理重新连接,并确保在每个 goroutine 中创建单独的 amqp.channel,同时在进程内共享 amqp.connection。

问题内容

我是rabbitmq的新手。

例如,有一个队列调用队列A并且它正在运行。当请求到来时,它返回响应。一周后,没有任何回复。检查的时候发现consumer自动变成0了,需要手动重新跑队列,为什么一周后consumer就变成0了,如何解决这个问题?


正确答案


通过 github.com/streadway/amqp,您可以使用 conn.notifyclose(closenotify) 获取 chan 来处理连接错误。例如,您可以创建一个 goroutine 来处理重新连接,如下所示:

for {
    select {
    case <-closeNotify:
        //reconnect and get closeNotify for the new connection
        //send the new amqp.Connection to other goroutine 
    case <-ctx.Done():
        return
    }
}

amqp.channel 还为 amqp channel 级别错误提供相同的功能。

顺便说一句,建议在每个 goroutine 中创建单独的 amqp.channel,并在进程内共享 amqp.connection。

今天关于《RabbitMQ消费者在经过一段时间后数量归零》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>