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