我是 NodeJS 的新手并使用 ff 包:
- 猫鼬 v5.0.9
- 以 seneca-amqp-transport 和 rabbitMQ 作为代理的 seneca v3.4.3(不确定术语是否正确)
有关示例代码和更多信息,请查看此链接。
我注意到,如果我有一个简单的 seneca 侦听器脚本 (RPC),仅带有rabbitMQ 连接,没有猫鼬连接,则侦听器脚本会在 rabbitMQ 死亡后死亡。这是因为 seneca 以某种方式发出了一个“杀死”信号,这对我来说没问题。如果它与rabbitMQ断开连接,我希望监听器脚本死掉。但是如果 seneca 侦听器脚本 (RPC) 有 rabbitMQ 和 mongoose 连接,并且 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] (27933 on mylaptop): 关闭数据库连接。
INFO [2019-03-21T06:37:33.387Z](我的笔记本电脑上的 27933):关闭消息代理。
INFO [2019-03-21T06:37:33.388Z](我的笔记本电脑上的 27933):消息代理已关闭。
INFO [2019-03-21T06:37:33.389Z](我的笔记本电脑上的 27933):数据库连接已关闭。
INFO [2019-03-21T06:37:33.391Z](我的笔记本电脑上的 27933):优雅退出已完成。
终止进程...
INFO [2019-03-21T06:37:33.391Z] (27933 on mylaptop): -- 执行退出监听器...
INFO [2019-03-21T06:37:33.391Z](我的笔记本电脑上的 27933):关闭数据库连接。
INFO [2019-03-21T06:37:33.392Z](我的笔记本电脑上的 27933):数据库连接已关闭。
INFO [2019-03-21T06:37:33.392Z](我的笔记本电脑上的 27933):关闭消息代理。
INFO [2019-03-21T06:37:33.392Z](我的笔记本电脑上的 27933):消息代理已关闭。
如您所见,我触发了 Ctrl+C (SIGINT),因为侦听器脚本确实响应了 rabbitMQ 关闭,但是您还可以看到-- Executing exit listener...
- seneca 的退出信号 - 已经在 NodeJS 的事件循环中但不知何故没有优先(?)/由NodeJS执行。
我想知道为什么?有没有办法绕过这个并优先考虑塞内卡的“杀戮”信号。
提前致谢。