amqplib - 如何安全地检查队列是否存在

问题描述:

我正在使用amqplib库进行nodejs与RabbitMQ协同工作。我试图通过使用功能checkQueue检查队列是否存在:amqplib - 如何安全地检查队列是否存在

mychannel.checkQueue('xxx', function (err, ok) { 
    console.log(err); 
    console.log(ok) 
}); 

但它不仅抛出一个错误,而且还关闭了通道。我如何安全地检查队列是否存在?

你不能冒着破坏渠道的风险。解决方法是创建一个可用于执行检查的临时通道。

从amqp.node dev的注释: (https://github.com/squaremo/amqp.node/issues/280

checkQueue的行为是由协议规定,但它可以是 合作周围。一种策略是创建一个“牺牲性”的额外频道, 用于测试队列是否存在。一旦你有了答案,你可以扔掉额外的频道,或者保留它以便进行更多的测试。