RabbitMQ客户端是否必须请求心跳超时,或者服务器默认为60?

时间:2018-04-04 18:58:42

标签: rabbitmq heartbeat

根据RabbitMQ文档:

“Heartbeat超时值定义了RabbitMQ和客户端库在对等TCP连接被认为无法访问(关闭)的时间段之后。此值在连接时在客户端和RabbitMQ服务器之间协商。客户端必须在RabbitMQ 3.0及更高版本中,代理将默认尝试协商心跳(尽管客户端仍然可以否决它们。)超时以秒为单位,默认值为60(版本3.5之前为580)。 5)。” (https://www.rabbitmq.com/heartbeats.html

我无法解码“客户端必须配置为请求心跳”这句话。

这是否意味着如果客户端不请求心跳,则不会发送心跳消息?如果是这样,服务器默认的重点是什么?

我查看了Java和C#客户端,它们的客户端默认值为60秒。是否有客户没有默认这个?

1 个答案:

答案 0 :(得分:3)

来自文件:

  

请注意,如果RabbitMQ服务器的心跳超时非零   配置(这是以3.6.x开头的版本中的默认值),.   客户只能降低价值但不能增加价值。

在任何情况下,服务器指定默认值都没有坏处。在协商心跳时,服务器向客户端发送其首选项,并且可以将客户端配置为考虑服务器默认值。

https://www.rabbitmq.com/amqp-0-9-1-reference.html#connection.tune

https://www.rabbitmq.com/amqp-0-9-1-reference.html#connection.tune-ok