У вас есть несколько вопросов, поэтому позвольте мне ответить на них по одному.
Как время начала, время окончания, статус выполнения родительской задачи обновляется при наличии нескольких рабочих?
Все компоненты в этой архитектуре являются задачами. Родитель - это задача, рабочие - это все задачи, поэтому все они обновляют хранилище задач независимо друг от друга. Родительское приложение отметит время запуска в начале задачи (до вызова любых реализаций CommandLineRunner
или ApplicationRunner
). Он обновит время окончания и результаты, как только все рабочие будут выполнены (поскольку удаленный разделенный шаг не будет завершен, пока все рабочие не будут завершены или истекло время ожидания).
Что произойдет, если один из рабочих процессов перестанет отвечать на запросы по каким-либо внешним причинам?
Средства развертывания, используемые DeployerPartitionHandler
, зависят от платформы (CloudFoundry, Kubernetes и т. Д.) Для производственного использования. Каждая из этих платформ обрабатывает зависшие процессы по-своему, поэтому ответ на этот вопрос действительно зависит от платформы. В большинстве случаев, если процесс определен как неработоспособный (по определению платформы), он будет остановлен.
Есть ли способ обработать эту ситуацию программно? то есть, чтобы убить не отвечающий процесс и пропустить шаг.
Если во время выполнения произойдет сбой раздела, родительский элемент также будет помечен как сбойный и может быть перезапущен. При перезапуске (по умолчанию) будут перезапущены только неисправные разделы. Любые разделы, которые уже завершены, не будут выполняться повторно.