У меня есть приложение узла, которое подключается к БД MS SQL при запуске и сохраняет соединения открытыми, пока приложение не будет уничтожено. При остановке приложения оно закрывает соединение перед выключением. Однако я также хочу добавить некоторые отказоустойчивые механизмы для закрытия соединений в случае внезапного выключения, перезапуска или любого другого непредвиденного события. Я пытаюсь достичь этого, обрабатывая сигналы SIGINT, SIGABRT, SIGTERM и SIGKILL. Я написал функцию, которая закрывает соединения БД при вызове, и вызываю ее в следующем сценарии ios -
process.on('exit', closeConnections);
process.on('SIGINT', closeConnections);
process.on('SIGABRT', closeConnections);
process.on('SIGTERM', closeConnections);
process.on('SIGKILL', closeConnections);
К сожалению, сейчас происходит то, что если я остановлю приложение узла с помощью ^ C тогда process.on('exit', closeConnections);
сработает. Но если я завершаю процесс из диспетчера задач или если я запускаю приложение через pm2 или nodemon и перезапускаю приложение там, ни одно из них не запускается, и оно просто перезапускается просто. Сейчас я пробую это на Windows, но я бы хотел, чтобы это работало и на Linux ОС.
Может кто-нибудь помочь мне решить эту проблему и помочь мне понять, что я делаю неправильно, что это не работает ?
Вся помощь очень ценится!