gpt4 book ai didi

node.js - RabbitMQ 的 AMQP (Node.js) 过早关闭连接

转载 作者:太空宇宙 更新时间:2023-11-03 23:27:00 25 4
gpt4 key购买 nike

我有以下代码,它给了我以下错误。

TypeError: Cannot read property 'assertQueue' of undefined
at /var/www/myapp/dashboard/routes.js:195:39
at /var/www/myapp/node_modules/amqplib/lib/callback_model.js:46:16
at /var/www/myapp/node_modules/amqplib/lib/callback_model.js:61:10
at /var/www/myapp/node_modules/amqplib/lib/callback_model.js:74:5

如果我注释掉 conn.close(),并且代码工作正常,并且我认为代码在执行 ch.assertQueue 之前试图过早关闭 conn。解决这个问题的最佳方法是什么?

amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'blast_queue';
var msg = blast.id;

ch.assertQueue(q, {durable: true});
ch.sendToQueue(q, new Buffer(msg), {persistent: true});
console.log(" [x] Sent '%s'", msg);
});
conn.close();
});

最佳答案

发生这种情况是因为连接关闭发生在执行conn.createChannel中的回调函数之前。要修复此问题,请在回调函数内移动关闭连接的行:

amqp.connect('amqp://localhost', function(err, conn) {
conn.createChannel(function(err, ch) {
var q = 'blast_queue';
var msg = blast.id;

ch.assertQueue(q, {durable: true});
ch.sendToQueue(q, new Buffer(msg), {persistent: true});
console.log(" [x] Sent '%s'", msg);
conn.close(); // <=== close connection here
});
});

关于node.js - RabbitMQ 的 AMQP (Node.js) 过早关闭连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42881091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com