【问题标题】:Why "close" event when something goes wrong with node-amqp?为什么当 node-amqp 出现问题时“关闭”事件?
【发布时间】:2014-01-10 11:15:20
【问题描述】:

(我使用的是 node-amqp 和 rabbitmq 服务器。)

如果出现问题,我试图猜测为什么我有一个关闭事件。例如,如果我尝试打开与队列的连接(参数错误),我会收到错误事件。这是完美的确定。

但是,在任何错误之后,我也会收到一个关闭连接(在这种情况下,可能是因为关闭了失败的套接字到队列)。之后,自动重新连接,我收到(初始)就绪事件。

问题:

connection.on('ready', function() {
 do_a_lot_of_things

}).on(error, function(error){
 solve_the_problem
});

如果出现问题,我会收到错误消息,但随后会发生“就绪”事件,它将重新执行 do_a_lot_of_things。我的方法错了吗?

最好的问候

【问题讨论】:

  • 我认为原因是当您尝试在 rabbitmq 中创建一个队列(错误的配置)时,这个 emmit 和错误,然后它关闭了连接。之后,node-amqp 进行重新连接(如果以这种方式配置)。如果再次引发连接成功就绪事件并再次完成 do_a_lot_of_things。

标签: node.js rabbitmq node-amqp


【解决方案1】:

您可以使用connection.once('ready', function () { … })(参见the documentation),它将仅在第一个事件上执行处理程序。

【讨论】:

  • 这似乎可以解决我当前的问题。但是,为什么我会收到这个 close/ready 序列?如果发生了真正重要的事情,例如:rabbit 服务器宕机,那么我想知道它何时再次启动并接收到“ready”事件。因此,我可以对此做出反应。
  • (我不熟悉 node-ampq 模块)。您还可以使用.on('ready') 添加第二个侦听器来对这些事件做出反应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多