gpt4 book ai didi

rabbitmq - 如何在不重启的情况下更改RabbitMQ Heartbeat

转载 作者:行者123 更新时间:2023-12-02 14:42:41 25 4
gpt4 key购买 nike

这里有几个关于 RabbitMQ 心跳的问题,但我还没有找到一个解决如何实际更改 60 秒(580 秒)的默认心跳值的问题以前的版本)。

如果消费者运行时间超过60秒并且无法产生任何算作心跳的流量(例如 PHP consumers ),RabbitMQ 将关闭连接,考虑到消费者已死亡,但消费者可能会继续运行,当它尝试生成 ACK 时,连接将关闭,您会收到如下错误消息:

Broken pipe or closed connection

可以将consumer端的心跳设置为较高的值,例如1800秒,但是如果broker配置不改变,那么会使用较低的值,以防出现默认值为60 秒。来自 RabbitMQ 文档:

The broker and client will attempt to negotiate heartbeats by default. When both values are non-0, the lower of the requested values will be used. If one side uses a zero value (attempts to disable heartbeats) but the other does not, the non-zero value will be used.

要更改心跳值,可以在 /etc/rabbitmq/rabbitmq.conf 中添加以下行(使用 new configuration format )

heartbeat = 1800

这需要重启,所以问题是:如何在不重启的情况下更改rabbitmq心跳值?

最佳答案

我正在回答我自己的问题,因为我花了一些时间才找到如何做到这一点,documentation on how to use eval没有多大帮助。

可以使用eval更改RabbitMQ配置值:

Evaluate an arbitrary Erlang expression.

使用rabbitmqctl eval就可以更改心跳值,而无需重新启动,如下所示:

# Set
rabbitmqctl eval 'application:set_env(rabbit, heartbeat, 1800).'

# Get
rabbitmqctl eval 'application:get_env(rabbit, heartbeat).'

关于rabbitmq - 如何在不重启的情况下更改RabbitMQ Heartbeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56886770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com