Как проверить, живо ли соединение в библиотеке RabbitMq node-amqplib?
Я пишу для продюсера и потребителя, используя библиотеку rabbitMq node-amqplib, я боюсь внезапно потерять соединение с сервером. Как я могу проверить, живо ли соединение или нет?
2 ответа
AMQP 0-9-1 предлагает функцию сердцебиения, чтобы гарантировать, что прикладной уровень оперативно узнает о разорванных соединениях (а также о полностью не отвечающих одноранговых узлах).
В amqplib вам нужно только установить время ожидания пульса (не 0), когда вы звоните connect([url, [socketOptions]])
и проверка будет выполнена автоматически.
Больше информации здесь:
Есть несколько вариантов сделать это:
Один из способов — использовать сердцебиение и прослушиватель событий, что-то вродеconn.on('close', (err) => { this.connected = false; } )
Или вы можете попасть в объект подключения. Здесь есть риск, так как обновления до amqplib могут сломать это, так как это не часть официального интерфейса:const connClosed = conn.connection['expectSocketClose']
Внутри объекта подключения есть другие свойства, которые также могут сообщить вам, закрыто ли оно, например, состояние записи потока (может быть ложным флагом) или объект сердцебиения.