Node.js amqplib - не удается выполнить переподключение в случае закрытия соединения - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь реализовать механизм переподключения, когда не удается установить соединение с сервером очередей 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 Ответ

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

У вас есть опечатка в вашем методе. Вам нужно использовать что-то вроде setTimeout(createConnection, 1000); вместо вашего setTimeout(createConnection(), 1000);

...