Я сейчас строю две службы Windows:
Первый получает сообщения от интернет-соединения и вставляет их в базу данных. Это разработано, чтобы быть быстрым и стабильным и не делать никакой другой обработки
Второй выполняет пакетный процесс с любыми новыми сообщениями, поступившими с момента его последнего запуска.
Я пытаюсь придумать, как вторая служба будет запускать свой пакетный процесс только тогда, когда новые сообщения будут готовы к обработке, а если ошибка второй службы, то первая служба будет продолжать работать, и наоборот. На данный момент он использует цикл каждые 5 секунд.
В настоящее время я думаю об использовании очереди сообщений, где первая служба записывает сообщение, только если очередь пуста, а вторая служба увидит, содержит ли очередь какие-либо сообщения, если не перейдет в асинхронное ожидание сообщения приходит, а затем удалите сообщение и запустите. Следовательно, использование очереди не в качестве очереди, а в качестве бинарного коммутатора, которое при изменении состояния вызывает запуск события для второй службы.
Полагаю, есть лучший способ сделать это, с которым я не сталкивался, может кто-нибудь, пожалуйста, укажет мне правильное направление?