Эй, у меня следующая ситуация: WinService, который обрабатывает некоторые вещи из очереди, записывает их в другие таблицы (во время обработки) и после его завершения удаляет запись и переходит к следующей.
Мне нужен механизм, чтобы определить, жив ли и работает экземпляр, а если нет, запускать или пробуждать второй экземпляр.
До сих пор я думал о том, чтобы иметь два экземпляра, каждый из которых пытаетсязабрать материал из очереди и обработать его (пытается, как в случае, если он может, например, keepAliveFlag не установлен или lastUpdateDate записи слишком давно).Может быть ситуация, когда они обрабатывают одну и ту же запись - это недостаток.
Для этого предложенного выше решения мне также понадобится своего рода механизм в случае, когда экземпляр пытается написать keepAliveFlag и не удается остановить.
Помимо этого решения, существуеттакже является решением для экземпляра постоянно записывать материал в базу данных и во второй экземпляр, чтобы проверить, записаны ли новые вещи, и если нет, то проснуться или запустить второй экземпляр.Но могут возникнуть некоторые проблемы: что произойдет, если бывший мастер проснется?И вообще, этот второй сценарий кажется труднее реализовать правильно.
Теперь вопрос: каков будет правильный шаблон для реализации этого?