我尝试过assertQueue,在这种情况下我不知道这意味着什么,有很多选择。但每次我都遇到同样的例外!
我要做的就是听一些队列并开始使用这些队列中的消息!我可以这样做而不必担心队列是否持久?
var amqp = require('amqplib/callback_api');
var c_con, c_ch;
// *** code omitted ***
...
var AMQPStats = require('amqp-stats');
var stats = new AMQPStats({
// *** code omitted ***
...
});
stats.queues(function(err, res, data){
if (err) {
console.log(err);
} else {
console.log('data received for ', data.length, ' queue.');
data.forEach(function(queue){
// c_ch.assertQueue(queue.name, {durable: queue.durable, auto_delete: queue.auto_delete});
c_ch.assertQueue(queue.name);
c_ch.consume(queue.name, function(msg) {
// *** code omitted ***
...
});
});
}
});
Channel closed by server: 406 (PRECONDITION-FAILED) with message "PRECONDITION_FAILED
- inequivalent arg 'durable' for queue 'Servicex.0cc2f2711d7d42f1ae1c64e4e84e6092_handler' in vhost '/':
received 'true' but current is 'false'"
尽管assertQueue的例外仍然存在,但是我发现在使用..之前不需要运行assertqueue,所以现在我只评论assertQueue调用。并且消费正在起作用。
我不知道为什么ameplib的所有示例都先运行assertQueue?!