Хороший способ достичь того, что вам нужно, - использовать шаблон проектирования автоматического выключателя.
Впервые я прочитал об этом в книге Майкла Т. Найгарда «Освободи его! Проектирование и развертывание готового программного обеспечения для производства», из Pragmatic Press, стр. 104–107.
Идея автоматического выключателя заключается в том, что он находится на пути соединения между системами, пропуская соединения, наблюдая за «условием обрыва». Например, он может сработать только в случае сбоя всех пяти подключений подряд.
Как только цепь оборвалась, все вызовы через автоматический выключатель немедленно прерываются, не обращаясь к внешней службе. Это продолжается до истечения времени ожидания, когда выключатель переходит в полуоткрытое состояние. Попытка следующего вызова - сбой приводит к сбросу тайм-аута, успешному закрытию выключателя и возобновлению работы системы.
Быстрый гугл нашел пост Тима Росса , который хорошо читается и более подробно.
В вашем случае вы можете использовать автоматический выключатель с тайм-аутом в 10 минут и триггером на 5 сбоев. В этом случае ваши файлы журнала будут содержать, в случае отказа в течение всего дня, пять исключений, зарегистрированных для исходной проблемы, а затем всего шесть раз в час (по сравнению с 240 с 15-секундными интервалами), указывая на то, что проблема сохраняется.
В зависимости от ваших требований, вы можете включить ручной «сброс» автоматического выключателя или просто оставить его для автоматического сброса, когда 10-минутный тайм-аут показывает, что все возвращается в норму. Это может быть полезно - как правило, чем меньше нужно сисадминов, тем лучше им это нравится.