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

时间:2013-03-18 01:04:06

标签: node.js rabbitmq amqp cloudamqp node-amqp

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

  • 我尝试过使用.on(“error”,cb)语法。
  • 我尝试过错误域名(节点0.10.0)
  • 尝试/捕获显然不起作用

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

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

在使用队列时,您会收到未处理的异常:

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

查看node-amqp内部我看到它们在模块内部实现了一个独立的任务队列,这样当错误发生时,任务就在独立的上下文中运行。

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

1 个答案:

答案 0 :(得分:2)

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

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

我希望这会有所帮助。

干杯!