Доброе время суток, Уважаемы гуру, прошу подсказать принцип организации стабильного консольного приложения на сервере.
Имеется три потока
- "стабильный" основной поток запускающий остальные
- поток со "стабильным" не меняемым кодом собирает информацию и должен работать при падении третьего
- поток с нестабильным изменяемым и сложным кодом в котором возможно падение.
Какие есть механизмы для контроля и перезапуска третьего потока при падении, при условии постоянной работы второго потока ?
Можно перейти на микросервисную архитектуру - на каждую "работу" свой процесс.
Основной процесс запускает и контроллирует работу остальных процессов. Он может не только контроллировать, что запущенный им процесс еще активен (не упал), но и что он не завис.
Если дочерний процесс упал или повис, то основной может безопастно его убить и перезапустить.
Общаться все процессы могут через очередь сообщений (MQ), их много разных с разными возможностями.
Эта архитектура легко маштабируется в будущем, например если понадобится несколько процессов-добытчиков и несколько процессов-обработчиков.