go - 为什么 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:写入:损坏的管道”
为什么会发生此错误?(我的代码有什么问题吗?)
连接可以空闲多长时间?
如何预防这个问题?
解决方案
正如 Cosmic Ossifrage 所说,错误是说您的 RabbitMQ 客户端已断开连接。
在您的客户端和服务器之间可能存在很多可以/将丢弃休眠连接的东西,因此不值得关注您的连接可以休眠多长时间。您想在连接管理器中设置请求的心跳间隔。
https://www.rabbitmq.com/heartbeats.html
我不熟悉您使用的框架,但我看到它在connection.godefaultHeartbeat
中有一个字段。您可能需要尝试使用该值来找到最佳平衡,即停止连接被终止,但不会因为保持活动流量而过于频繁地访问服务器。
推荐阅读
- arrays - 如何使用 luabind 从 struct 中导出 char 数组
- python - tiff 图像转换为一维数组
- php - 您如何使用 PHP 从 mx 记录中获取所有 ptr 记录?
- amazon-web-services - 如何将事件数据从 Kinesis 流式传输到 Pinpoint
- java - 我在按钮单击侦听器中收到错误(Android Studio)
- angular - Angular 服务器端渲染:Router-outlet 不会从延迟加载页面渲染 HTML
- c# - 在 C# 中从其接口的泛型类型存储和访问类的实现特定数据
- oracle-apex - 从交互式报表中的一行获取 ID
- solidity - RemoveLiquidity 从 Uniswap 分叉储备中的剩余代币
- php - 将折扣复选框添加到 Woocommerce 购物车页面