节点Seneca猫鼬奇怪的行为

时间:2019-03-21 22:49:45

标签: node.js mongoose rabbitmq bluebird seneca

我是NodeJS的新手,正在使用ff软件包:

  • 猫鼬v5.0.9
  • 使用seneca-amqp-transport和RabbitMQ作为代理的seneca v3.4.3(不确定术语是否正确)

有关示例代码和更多信息,请check this link

我注意到,如果我只有一个简单的seneca侦听器脚本(RPC),仅具有rabbitMQ连接,没有猫鼬连接,则该侦听器脚本会在RabbitMQ死后死去。这是因为千变万化的塞内卡发出了一个“杀死”信号,这对我来说还可以。我希望侦听器脚本在与RabbitMQ断开连接时死亡。 但是,如果seneca侦听器脚本(RPC)具有RabbitMQ和猫鼬连接,并且RabbitMQ死了,则侦听器脚本仍会启动并运行。猫鼬以某种方式保持了连接或脚本的正常运行。

请参见以下输出:

  

INFO [2019-03-21T06:37:23.934Z](mylaptop上为27933):工人初始化了...
  INFO [2019-03-21T06:37:33.382Z](mylaptop上为27933):-正在执行SIGINT侦听器...
  INFO [2019-03-21T06:37:33.384Z](mylaptop上为27933):正在关闭数据库连接。
  INFO [2019-03-21T06:37:33.387Z](mylaptop上为27933):关闭消息代理。
  INFO [2019-03-21T06:37:33.388Z](mylaptop上为27933):消息代理已关闭。
  INFO [2019-03-21T06:37:33.389Z](mylaptop上为27933):数据库连接已关闭。
  INFO [2019-03-21T06:37:33.391Z](mylaptop上为27933):优美的退出已完成。
  终止过程...
  INFO [2019-03-21T06:37:33.391Z](在mylaptop上为27933):-正在执行退出监听器...
  INFO [2019-03-21T06:37:33.391Z](在mylaptop上为27933):正在关闭数据库连接。
  INFO [2019-03-21T06:37:33.392Z](mylaptop上为27933):数据库连接已关闭。
  INFO [2019-03-21T06:37:33.392Z](mylaptop上为27933):关闭消息代理。
  INFO [2019-03-21T06:37:33.392Z](mylaptop上为27933):消息代理已关闭。

如您所见,我触发了Ctrl + C(SIGINT),因为侦听器脚本确实响应了RabbitMQ关闭,但是您还可以看到-- Executing exit listener...-seneca的退出信号-已经在NodeJS的事件循环,但是不知道NodeJS优先执行该事件吗?

我想知道为什么吗?有没有一种方法可以绕过这个问题,并优先处理来自Seneca的“杀死”信号。

谢谢。

0 个答案:

没有答案