为什么不使用RabbitMQ时连接不会保持打开状态?

时间:2018-09-25 06:29:31

标签: go rabbitmq amqp

我在应用程序中使用了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:写:破损的管道”

  1. 为什么会发生此错误? (我的代码有问题吗?)

  2. 连接可以空闲多长时间?

  3. 如何预防此问题?

1 个答案:

答案 0 :(得分:0)

正如Cosmic Ossifrage所说,该错误表明您的RabbitMQ客户端已断开连接。

您的客户端和服务器之间可能有很多事情可能会/将使休眠连接断开,因此不值得关注连接可以休眠多长时间。您想在连接管理器中设置请求的心跳间隔。

https://www.rabbitmq.com/heartbeats.html

我对您使用的框架不熟悉,但是我看到它在 connection.go 中有一个defaultHeartbeat字段。您可能需要尝试使用该值来找到最佳平衡,以阻止连接被终止,但不要因保持活动流量而频繁击中服务器。