Heartbeat超时值

 

heartbeat超时值定义了RabbitMQ及其client库在多久之后认为TCP连接不可到达。这个值是在client连接RabbitMQ服务器的时候协商好的,在RabbitMQ 3.0及以上版本,broker缺省就会自动尝试进行heartbeat协商,而对于低版本则必须由client在连接时显示地请求协商。该值单位为秒,缺省是60秒。
每隔timeout / 2秒发送一个Heartbeat消息帧,这个值有时被称作heartbeat interval,如果连续丢失两个heartbeats消息帧,就认为tcp连接中断了。不同的client表现不同,但是都会关闭tcp连接。当客户端通过heatbeat机制检测到RabbitMQ节点不可到达时,应该尝试重新连接。
不要混淆timeoutinterval这两个值,RabbitMQ以及官方提供的client库都使用timeout,而某些client库使用的是interval
只要链路上有消息在传递,那么就认为是有效的heartbeat,client可以不考虑链路上是否有消息传递就发送heartbeat消息帧,也可以只在必要时才发。
可以把timeout设置成0来禁用heartbeat,但是实践中不建议这么用。

Java代码启用Heartbeat

Java客户端代码中在连接之前,通过调用ConnectionFactory#setRequestedHeartbeat来和服务器协商timeout值。

ConnectionFactory cf = new ConnectionFactory();

// set the heartbeat timeout to 60 seconds
cf.setRequestedHeartbeat(60);

注意:当服务器配置了非0的timeout值情况下,client只能设置比它小的值,不能比它大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值