根据RabbitMQ文档:
“Heartbeat超时值定义了RabbitMQ和客户端库在对等TCP连接被认为无法访问(关闭)的时间段之后。此值在连接时在客户端和RabbitMQ服务器之间协商。客户端必须在RabbitMQ 3.0及更高版本中,代理将默认尝试协商心跳(尽管客户端仍然可以否决它们。)超时以秒为单位,默认值为60(版本3.5之前为580)。 5)。” (https://www.rabbitmq.com/heartbeats.html)
我无法解码“客户端必须配置为请求心跳”这句话。
这是否意味着如果客户端不请求心跳,则不会发送心跳消息?如果是这样,服务器默认的重点是什么?
我查看了Java和C#客户端,它们的客户端默认值为60秒。是否有客户没有默认这个?
答案 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