此问题出现的原因可能是由于AWS MQ没有正确地响应amqplib与其建立连接的请求。为了解决这个问题,需要在amqplib中手动设置超时时间,以便在AWS MQ未响应时自动断开。以下是示例代码:
const amqp = require('amqplib/callback_api'); const AWS = require('aws-sdk');
const QUEUE_NAME = 'my_queue';
const options = {
protocol: 'amqp',
hostname: '
const connTimeout = setTimeout(() => { console.error('Connection timeout!'); process.exit(1); }, 5000);
amqp.connect(options, (err, conn) => {
clearTimeout(connTimeout);
if (err) {
console.error(err);
return;
}
console.log('Connected successfully to AWS MQ!');
conn.createChannel((err, channel) => {
if (err) {
console.error(err);
return;
}
channel.assertQueue(QUEUE_NAME, {durable: false});
console.log(Waiting for messages in ${QUEUE_NAME}.);
channel.consume(QUEUE_NAME, (msg) => {
console.log(Received message: "${msg.content.toString()}");
channel.ack(msg);
}, {noAck: false});
});
});
在上面的代码中,我们使用amqplib连接到AWS MQ,并手动设置超时时间为5秒。如果我们在连接成功之前没有收到响应,我们将会触发连接超时。如果使用连接字符串而不是选项对象,则可以通过以下方式手动设置超时时间:
amqp.connect('amqps://
通过这些更改,我们可以成功地与