答案 0 :(得分:3)
来自RabbitMQ文档:
心跳超时值定义了对等体在什么时间段之后 RabbitMQ和TCP应该认为TCP连接不可达(向下) 客户端库。此值在客户端和。之间协商 RabbitMQ服务器在连接时。客户必须是 配置为请求心跳。在RabbitMQ 3.0及更高版本中, 默认情况下,经纪人将尝试协商心跳(尽管如此) 客户仍然可以否决他们)。超时以秒为单位 默认值为60(版本3.5.5之前为580)。
https://www.rabbitmq.com/heartbeats.html
Pika过去常常选择服务器和客户端之间的最小心跳值。从0.11开始不再是这种情况。 Pika选择客户端和服务器之间的最高心跳值(这是AMQP客户端的常态)。这意味着如果您将心跳值设置为低于60秒,Pika将始终选择RabbitMQ的值,因为它更高。尝试将心跳设置为高于60秒的值,并且应该在管理控制台中可见。
但是,如果你真的想将心跳值设置为低于60秒(这会产生反作用),你仍然可以在configuration中设置值。
编辑2019-01-23:自Pika 1.0起,此行为has changed再次出现。现在,如果客户端和服务器都指定了非零心跳间隔值,Pika会选择客户端和服务器之间的最低心跳间隔值。如果客户端或服务器未指定心跳间隔值或指定为零,则如果存在,则采用指定值,否则为零(这意味着禁用心跳)。尽管如此,并不意味着使用低心跳间隔总是一个好主意。