我在应用程序中使用了http://github.com/streadway/amqp软件包,以便处理与远程RabbitMQ服务器的连接。一切都很好并且可以正常工作,但是当连接长时间空闲(例如6个小时)时,它将关闭。我一直在go例程中检查NotifyClose(make(chan * amqp.Error))并返回:
异常(501)原因:“写TCP 192.168.133.53:55424->192.168.134.34:5672:写:破损的管道”
为什么会发生此错误? (我的代码有问题吗?)
连接可以空闲多长时间?
如何预防此问题?
答案 0 :(得分:0)
正如Cosmic Ossifrage所说,该错误表明您的RabbitMQ客户端已断开连接。
您的客户端和服务器之间可能有很多事情可能会/将使休眠连接断开,因此不值得关注连接可以休眠多长时间。您想在连接管理器中设置请求的心跳间隔。
https://www.rabbitmq.com/heartbeats.html
我对您使用的框架不熟悉,但是我看到它在 connection.go 中有一个defaultHeartbeat
字段。您可能需要尝试使用该值来找到最佳平衡,以阻止连接被终止,但不要因保持活动流量而频繁击中服务器。