Здесь в SO есть несколько вопросов о пульсе RabbitMQ, но я не нашел ни одного, касающегося того, как на самом деле изменить значение пульса по умолчанию 60 seconds
(580 seconds
в предыдущих версиях).
В случае, когда потребитель работает дольше 60 seconds
и не может генерировать какой-либо трафик, который можно было бы считать пульсом (например, потребители PHP), RabbitMQ закроет соединение, учитывая, что потребитель мертв, но потребитель может продолжать работать, и когда он попытается создать ACK, соединение будет закрыто. и вы получаете сообщение об ошибке, например:
Сломанная труба или закрытое соединение
На стороне потребителя можно установить пульсацию на более высокое значение, например 1800 seconds
, но если конфигурация брокера не изменена, то будет использоваться более низкое значение, в случае значения по умолчанию — 60 seconds
. Из документов RabbitMQ:
По умолчанию брокер и клиент попытаются согласовать такты. Когда оба значения отличны от 0, будет использоваться меньшее из запрошенных значений. Если одна сторона использует нулевое значение (попытки отключить пульсацию), а другая нет, будет использовано ненулевое значение.
Чтобы изменить значение Heartbeat, можно добавить следующую строку в /etc/rabbitmq/rabbitmq.conf
(используя новую конфигурацию формат)
heartbeat = 1800
Для этого требуется перезагрузка, поэтому возникает вопрос: Как изменить значение пульса rabbitmq без перезагрузки?