首页 > 解决方案 > 为什么 RabbitMQ 在不使用时连接不会保持打开状态?

问题描述

我在我的应用程序中使用了http://github.com/streadway/amqp包来处理与远程 RabbitMQ 服务器的连接。一切正常,工作正常,但是当连接长时间空闲 fg 6 小时时,它会关闭。我在我的 go 例程中一直检查 NotifyClose(make(chan *amqp.Error)) 并返回:

异常 (501) 原因:“写入 tcp 192.168.133.53:55424->192.168.134.34:5672:写入:损坏的管道”

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

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

  3. 如何预防这个问题?

标签: gorabbitmqamqp

解决方案


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

在您的客户端和服务器之间可能存在很多可以/将丢弃休眠连接的东西,因此不值得关注您的连接可以休眠多长时间。您想在连接管理器中设置请求的心跳间隔。

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

我不熟悉您使用的框架,但我看到它在connection.godefaultHeartbeat中有一个字段。您可能需要尝试使用该值来找到最佳平衡,即停止连接被终止,但不会因为保持活动流量而过于频繁地访问服务器。


推荐阅读