Узел Сенека Мангуст Странное поведение - PullRequest
1 голос
/ 22 марта 2019

Я новичок в NodeJS и работаю с пакетами ff:

  • Мангуст v5.0.9
  • seneca v3.4.3 с seneca-amqp-transport и rabbitMQ в качестве брокера (не уверен, что терминология верна)

Для примера кода и дополнительной информации, проверьте эту ссылку .

Я заметил, что если у меня есть простой сценарий прослушивания seneca (RPC) с одним подключением rabbitMQ, без подключения mongoose, сценарий прослушивателя умирает после смерти rabbitMQ. Это потому, что каким-то образом Сенека испускает сигнал «убить», что хорошо для меня. Я хочу, чтобы скрипт слушателя умер, если он был отключен от rabbitMQ. Но если у сценария слушателя seneca (RPC) есть соединения rabbitMQ и mongoose, и rabbitMQ умирает, сценарий слушателя все еще работает. Каким-то образом мангуста поддерживает соединение или работает скрипт.

См. Вывод ниже:

INFO [2019-03-21T06: 37: 23.934Z] (27933 на mylaptop): Рабочие инициализированы ...
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.382Z] (27933 на mylaptop): - Выполнение прослушивателя SIGINT ...
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.384Z] (27933 на mylaptop): закрытие соединения с базой данных.
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.387Z] (27933 на mylaptop): Брокер закрытия сообщений.
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.388Z] (27933 на mylaptop): Брокер сообщений закрыт.
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.389Z] (27933 на mylaptop): Соединение с базой данных закрыто.
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.391Z] (27933 на mylaptop): завершен изящный выход.
Завершение процесса ...
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.391Z] (27933 на mylaptop): - Выполнение обработчика выхода ...
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.391Z] (27933 на mylaptop): закрытие соединения с базой данных.
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.392Z] (27933 на mylaptop): Соединение с базой данных закрыто.
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.392Z] (27933 на mylaptop): брокер закрытия сообщений.
ИНФОРМАЦИЯ [2019-03-21T06: 37: 33.392Z] (27933 на mylaptop): Брокер сообщений закрыт.

Как вы можете видеть, я вызвал Ctrl + C (SIGINT), потому что скрипт слушателя действительно отреагировал на завершение работы rabbitMQ, но вы также можете видеть, что -- Executing exit listener... - сигнал выхода от seneca - уже в событии цикл NodeJS, но каким-то образом не имеет приоритета (?) / выполняется NodeJS.

Я хочу знать, почему? Есть ли способ обойти это и расставить приоритеты сигнала «убить» от Сенека.

Заранее спасибо.

...