1

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

  • 我试过使用 .on("error",cb) 语法。
  • 我尝试过错误域(节点 0.10.0)
  • Try/catch 显然没有用

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

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 内部,我看到它们在模块内实现了一个独立的任务队列,以便在发生错误时,该任务在独立的上下文中运行。

是否有任何解决方法/修复?...或者我只是做错了什么?

4

1 回答 1

2

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

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

我希望这有帮助。

干杯!

于 2014-05-19T15:50:03.743 回答