Обработка ошибок Jxcore в Для узлов с несколькими запросами
Я запускаю код nodejs (server.js) как jxcore, используя jx mt-keep:4 server.js
у нас много запросов в секунду, и в основном происходит транзакция. Я ищу способ отловить ошибку, если какой-либо поток умирает, и информация о запросе возвращается мне, чтобы я мог перехватить этот запрос и предпринять соответствующие действия на его основе. Таким образом, в этом я не могу потерять входящий запрос и обработаю его.
Это проект nodejs, и из-за срочности проекта был перемещен в jxcore. Пожалуйста, дайте мне знать, если есть способ справиться с этим даже на уровне кода.
1 ответ
На самом деле это похоже на один экземпляр Node.JS. У вас есть те же инструменты и опции для обработки ошибок.
Кроме того, поток JXcore предупреждает очередь задач, когда ловит неожиданное исключение на земле JS (очередь задач перестает отправлять запросы обратно в этот экземпляр), а затем безопасно перезапускает конкретный поток. Вы можете прослушивать "неперехваченное исключение", "перезапускать" события для потока и управлять более мягким перезапуском.
process.on('restart', res_cb, exit_code){
// thread needs a restart (due to unhandled exception, IO, hardware etc..)
// prepare your app for this thread's restart
// call res_cb(exit_code) for restart.
});
Примечание: JXcore ожидает, что приложение запущено и работает не менее 5 секунд, прежде чем перезапускать какой-либо поток. Возможно, это ограничение защищает приложение от циклического перезапуска потока.
Вы можете запустить свое приложение, используя 'jx monitor', оно поддерживает многопоточность и перезагружает сбойные процессы.