Node.js amqplib - не удается выполнить переподключение в случае закрытия соединения
Я пытаюсь реализовать механизм переподключения, когда не удается установить соединение с сервером очередей rabbitmq. Этот код предназначен только для потребления сообщений. Ниже приведен мой код (функция Init канала выполняет инициализацию потребителя и привязку к очереди).
connect() {
let conn = amqp.connect(queueConfig.QUEUE_SERVER_URL + "?heartbeat=60");
return conn;
}
createConnection(){
console.log("Trying to connect amqp");
let self = this;
self.connection = this.connect()
.then(function(connection){
console.log("[AMQP] connected");
connection.on("error",function(err){
if (err.message !== "Connection closing") {
console.error("[AMQP] conn error", err.message);
}
});
connection.on("close", function() {
console.error("[AMQP] reconnecting");
return setTimeout(createConnection, 1000);
});
return connection.createConfirmChannel();
})
.then(self.channelInit);
}
При сбое подключения я успешно получаю приглашение "[AMQP] переподключение", но после того, как эта очередь не пересоединяется, другие запросы не появляются в журнале консоли.
Пожалуйста помоги.
1 ответ
Решение
У вас есть опечатка в вашем методе. Вам нужно использовать что-то вроде setTimeout(createConnection, 1000);
вместо вашего setTimeout(createConnection(), 1000);