Node.js amqplib - 连接关闭时无法实现重新连接
Node.js amqplib - not able to implement the reconnect in case of connection close
我正在尝试在与 rabbitmq 队列的连接失败时实现重新连接机制 server.This 代码仅用于消费消息,下面是我的代码(通道 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] 正在重新连接”,但在该队列未重新连接后,控制台日志中没有其他提示。
请帮忙。
您的方法有错别字。您需要使用 setTimeout(createConnection, 1000);
之类的东西,而不是 setTimeout(createConnection(), 1000);
我正在尝试在与 rabbitmq 队列的连接失败时实现重新连接机制 server.This 代码仅用于消费消息,下面是我的代码(通道 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] 正在重新连接”,但在该队列未重新连接后,控制台日志中没有其他提示。
请帮忙。
您的方法有错别字。您需要使用 setTimeout(createConnection, 1000);
之类的东西,而不是 setTimeout(createConnection(), 1000);