llo*_*ono 3 heartbeat rabbitmq consumer rabbitmqctl
这里有几个关于 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心跳值?
llo*_*ono 10
我正在回答我自己的问题,因为我花了一些时间才找到如何做到这一点,有关如何使用eval的文档并不是很有帮助。
可以使用eval更改 RabbitMQ 配置值:
评估任意 Erlang 表达式。
rabbitmqctl eval然后使用可以在不重启的情况下更改心跳值,如下所示:
# Set
rabbitmqctl eval 'application:set_env(rabbit, heartbeat, 1800).'
# Get
rabbitmqctl eval 'application:get_env(rabbit, heartbeat).'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |