Как проверить работоспособность базы данных и работоспособность пула соединений - PullRequest
0 голосов
/ 21 октября 2019
@Component
public class CustomHealthIndicator extends AbstractHealthIndicator {

@Override
protected void doHealthCheck(Health.Builder builder) throws Exception {
    // Use the builder to build the health status details that should be reported.
    // If you throw an exception, the status will be DOWN with the exception message.

    builder.up()
            .withDetail("app", "Alive and Kicking")
            .withDetail("error", "Nothing! I'm good.");
}

} Здесь я заметил, что проверка работоспособности по умолчанию происходит через / health, я хочу переопределить что-то вроде выше, когда в пуле dataConnection не хватает доступного соединения, мне нужно вернуть pod не готов. Также мне нужно проверить работоспособность базы данных. как это реализовать?

1 Ответ

0 голосов
/ 21 октября 2019

Я делал нечто подобное целую вечность. Исходя из моего опыта работы с HikariDataSource, я получил такой результат:

@Autowired
    private DataSource dataSource;

    @Override
    protected void doHealthCheck(Health.Builder builder) throws Exception {

        HikariDataSource ds = (HikariDataSource) dataSource;
        Integer maxSize = ds.getMaximumPoolSize();
        Integer active = new HikariDataSourcePoolMetadata(ds).getActive();
        Double usage = new Double((active / maxSize) * 100);

        Health.Builder workingBuilder;

        if(usage > 90) {
            workingBuilder = builder.down();
        }else {
            workingBuilder = builder.up();
        }

        workingBuilder.withDetail("max", maxSize) //
        .withDetail("active", active)//
        .withDetail("usage", usage);
    }

Может быть, есть лучший подход с помощью Actuator Metrics или с

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