当前位置: 首页 > 知识库问答 >
问题:

Node.js amqplib -在连接关闭的情况下无法实现重新连接

贲宏硕
2023-03-14

当连接到rabbitmq队列服务器失败时,我正在尝试实现重新连接机制。此代码仅用于消费消息,下面是我的代码(channel 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个答案

锺离浩慨
2023-03-14

您的方法中有错别字。你需要使用 setTimeout(createConnection, 1000); 而不是你的 setTimeout(createConnection(), 1000);

 类似资料:
  • 我正在尝试使用ApacheDBCP2使用连接池。 我的最大总连接是5。我关闭每一个连接后,它被使用。 但在连接池中关闭5次连接后,我仍然获得连接。 关闭5个连接后,何时ping数据库以获取连接?或者,它将从连接池本身获取数据,而不访问数据库。 下面是我的示例代码片段。请纠正我对连池的理解。

  • 问题内容: 我已经在带有Selenium和PhantomJS的Python中设置了一个简单的webscraping脚本。我总共要抓取大约200个URL。脚本最初运行良好,然后运行了大约20-30个URL(它可能会更多/更少,因为它失败时似乎是随机的,并且与任何特定的URL不相关),我在python中收到以下错误: 还有我的ghostdriver.log: 我进行了搜索,关于SO的大多数问题似乎都是

  • 我的Spring Hibernate Web应用程序在MySQL上运行,这给我带来了麻烦。 我四处寻找并尝试了不同的配置,在这个网站上阅读了相当多的帖子,但它仍然会弹出微笑的头像。 错误消息是:由:com.mysql.jdbc.exceptions.jdbc4.通信异常:从服务器成功接收到的最后一个数据包是63,313,144毫秒前。最后一个成功发送到服务器的数据包是63,313,144毫秒前。比

  • 我使用weblogic应用服务器和oracle数据库。我使用jdbc与oracle数据库通信。我从weblogic数据源获得连接,并向表中插入一条记录。问题是,当我想关闭连接(插入数据库后)时,我会遇到一个异常(连接已经关闭)。这是我的代码: 但是联系。close语句引发异常: 我试图避免连接。close语句(因为我教过连接是自动关闭的!!但过了一段时间,所有的连接都打开了,因此引发了一个异常)

  • 我想通过pymongo阅读集合,但我得到以下错误: 回溯(最近的调用为last):文件“C://users/gsingh/pycharmprojects/mc/quizQuestionAnswers.py”,第21行,pprint.pprint(posts.find_one())文件“C:\users\gsingh\appdata\local\continuum\anaconda2\lib\sit

  • 我通过play framework和mariadb客户端使用hikari pool connection,由于我定期更新它们(play 2.6.5->2.6.6和mariadb 2.1.1->2.1.2,但不确定是否相关),我出现了以下错误: 我在这里发现了一个相关的问题,并试图将idleTimeout和maxLifetime更改为2分钟和5分钟,但错误仍然发生。 我使用的是HikariCP 2.