处理node-amqp(node.js)中的独占队列订阅时出错

当您订阅独占队列(一次只允许一个消费者)时,node-amqp会在队列超额订阅(已经有消费者)时抛出exception。

  • 我试过使用.on(“error”,cb)语法。
  • 我试过错误域(节点0.10.0)
  • 尝试/抓住显然没有工作

这是我的订阅线,但没什么特别的:

queue.subscribe({ack: true, prefetchCount: 1, exclusive: exclusive}, cbExecute).addCallback((ok) -> listeners[type] = ok.consumerTag); 

当使用队列时,会得到未处理的exception:

 ACCESS_REFUSED - queue 'respQ' in vhost 'brkoacph' in exclusive use 

看看node-amqp里面的内容,我发现它们在模块内部实现了一个独立的任务队列,所以当发生错误时,任务在独立的上下文中运行。

有没有解决方法? …或者我只是做错了什么?

我认为你想要做的就是捕捉AMQP connection的错误。 正如你所提到的, node-amqp在不同的上下文中捕获错误,但是你可以在连接上监听:

 yourConnectionVar.on( 'error', function(err) { //do something console.log('An error occurred' + err); }); 

我希望这有帮助。

干杯!