这里有几个关于 RabbitMQ 心跳的问题,但我还没有找到解决如何实际更改60 seconds(580 seconds在以前的版本中)的默认心跳值的问题。
如果消费者运行的时间超过60 seconds并且无法产生任何算作心跳的流量(例如PHP 消费者),RabbitMQ 将考虑消费者已死而关闭连接,但消费者可能会继续运行,并且当它尝试生成 ACK 时,连接已关闭,您会收到如下错误消息:
破裂的管道或封闭的连接
例如1800 seconds,可以将消费者端的心跳设置为更高的值,但是如果代理配置未更改,则将使用较低的值,如果是默认值 then 60 seconds。来自 RabbitMQ 文档:
默认情况下,代理和客户端将尝试协商心跳。当两个值都不为 0 时,将使用请求值中较低的一个。如果一侧使用零值(尝试禁用心跳)而另一侧不使用,则将使用非零值。
要更改心跳值,可以添加以下行/etc/rabbitmq/rabbitmq.conf(使用新的配置格式)
heartbeat = 1800
Run Code Online (Sandbox Code Playgroud)
这需要重启,所以问题是:如何在不重启的情况下更改rabbitmq心跳值?