Почему RabbitMQ не остается открытым, когда он не используется? - PullRequest
0 голосов
/ 25 сентября 2018

Я использовал пакет http://github.com/streadway/amqp в своем приложении для обработки соединений с удаленным сервером RabbitMQ.Все в порядке и работает нормально, но когда соединение не используется в течение длительного периода времени, например, 6 часов, оно закрывается.Я проверяю NotifyClose (make (chan * amqp.Error)) все время в своей подпрограмме go, и она возвращает:

Исключение (501) Причина: "write tcp 192.168.133.53:55424->192.168.134.34: 5672: запись: сломанная труба "

  1. Почему возникает эта ошибка?(есть ли проблема в моем коде?)

  2. Как долго соединение может простаивать?

  3. Как предотвратить эту проблему?

1 Ответ

0 голосов
/ 25 сентября 2018

Как говорит Cosmic Ossifrage, ошибка говорит о том, что ваш клиент RabbitMQ отключился.

Между клиентом и сервером может находиться так много вещей, которые могут / будут сбрасывать неактивные соединения, на которых не стоит концентрироватьсякак долго ваше соединение может быть неактивным.Вы хотите установить запрошенный интервал пульса в диспетчере соединений.

https://www.rabbitmq.com/heartbeats.html

Я не знаком с используемой платформой, но вижу, что в ней есть поле defaultHeartbeatв connection.go .Возможно, вам придется поэкспериментировать со значением, чтобы найти оптимальный баланс, чтобы остановить разрыв соединения, но не слишком часто попадать на сервер с использованием трафика keep-alive.

...