Работа с автономной базой данных, а все остальное работает? - PullRequest
2 голосов
/ 12 октября 2011

У меня есть служба Windows, которая контролирует несколько почтовых ящиков на наличие новой почты.После получения новой почты служба отвечает за определение того, что с ней делать.Он может либо проанализировать его и ввести в базу данных, либо проигнорировать, либо переслать кому-либо, если он его не распознает.

У меня уже есть работающая реализация, если / когда наш почтовый сервер выходит из строя там, гдеСлужба будет пытаться переподключаться каждые n минут до успешного завершения.Другая проблема заключается в том, что произойдет, если / когда сервер базы данных выйдет из строя.Наш сервис вполне мог бы по-прежнему работать и анализировать электронную почту, но остановился бы, если вставка базы данных не удалась.

Как мне справиться с отключением базы данных?Вместо того, чтобы мой сервис отвечал за взаимодействие с базой данных, я использую систему обмена сообщениями, такую ​​как NServiceBus, и отправляю сообщения для каждого нового элемента, который необходимо добавить.Тогда этот сервис попытается обработать его.Если по какой-либо причине обработка не удалась (скорее всего, база данных не работает), просто оставьте элемент в очереди для последующей обработки?

1 Ответ

2 голосов
/ 12 октября 2011

Одна возможность:

Если база данных не работает, сериализовать выполненную работу в XML или двоичный формат и сохранить ее в файловой системе, если база данных не работает. Считайте, что это автономная очередь. Когда база данных восстановится, попросите процесс десериализовать данные обратно и затем сохранить их в базе данных.

Таким образом, вы все равно можете рассмотреть обработанные данные и вставить их позже. Очередь (резервная копия) - это файловая система.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...