2015-09-02 1 views
0

Мы используем проверку работоспособности Spring Boot Health в нашем приложении. В одном из проверенных приложений похоже, что БД не может ответить своевременно. Мы используем DataSourceHealthIndicator, и это отвечает через несколько секунд с исключением, которое является прекрасным, но требует повторных временных рамок.Spring HealthIndicator - Timeout

Можем ли мы установить тайм-аут на этот HealthIndicator (и, скорее всего, на других), чтобы HealthIndicator отчитался после того, как сказал 2s последним с ошибкой, если соединение с БД не может быть установлено?

Или можно ли запросить источник данных, если есть какие-либо открытые соединения?

Я знаю, что мы должны исправить проблему с этими соединениями, и мы уже работаем над этим, но HealthCheck для чего-то подобного тоже будет приятным.

ответ

1

Можно отключить индикатор состояния БД по умолчанию в ваших application.properties

management.health.db.enabled=false 

и реализовать пользовательские HealthIndicator что желаемое поведение, как описано here.

В вашей пользовательской HealthIndicator РЕАЛИЗАЦИИ вы можете использовать различные JdbcTemplate, которые возжелали таймаут 2 секунды, что-то вроде этого:

JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource); 
jdbcTemplate.setQueryTimeout(2); 
jdbcTemplate.execute(...); 

Если выполнить вызов бросает исключение, ваш индикатор должен вернуть Health.down(), в противном случае Health.up() необходимо вернуть.