Create spring-boot-health module
This commit is contained in:
@@ -21,14 +21,14 @@ import io.r2dbc.spi.ConnectionFactory;
|
||||
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
|
||||
import org.springframework.boot.actuate.autoconfigure.health.CompositeReactiveHealthContributorConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.ReactiveHealthContributor;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.r2dbc.actuate.health.ConnectionFactoryHealthIndicator;
|
||||
import org.springframework.boot.health.ReactiveHealthContributor;
|
||||
import org.springframework.boot.r2dbc.autoconfigure.R2dbcAutoConfiguration;
|
||||
import org.springframework.boot.r2dbc.health.ConnectionFactoryHealthIndicator;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
/**
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.r2dbc.actuate.health;
|
||||
package org.springframework.boot.r2dbc.health;
|
||||
|
||||
import io.r2dbc.spi.Connection;
|
||||
import io.r2dbc.spi.ConnectionFactory;
|
||||
@@ -24,11 +24,10 @@ import io.r2dbc.spi.ValidationDepth;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import org.springframework.boot.actuate.health.AbstractReactiveHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.Health;
|
||||
import org.springframework.boot.actuate.health.Health.Builder;
|
||||
import org.springframework.boot.actuate.health.HealthIndicator;
|
||||
import org.springframework.boot.actuate.health.Status;
|
||||
import org.springframework.boot.health.AbstractReactiveHealthIndicator;
|
||||
import org.springframework.boot.health.Health;
|
||||
import org.springframework.boot.health.HealthIndicator;
|
||||
import org.springframework.boot.health.Status;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@@ -69,18 +68,18 @@ public class ConnectionFactoryHealthIndicator extends AbstractReactiveHealthIndi
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Mono<Health> doHealthCheck(Builder builder) {
|
||||
protected final Mono<Health> doHealthCheck(Health.Builder builder) {
|
||||
return validate(builder).defaultIfEmpty(builder.build())
|
||||
.onErrorResume(Exception.class, (ex) -> Mono.just(builder.down(ex).build()));
|
||||
}
|
||||
|
||||
private Mono<Health> validate(Builder builder) {
|
||||
private Mono<Health> validate(Health.Builder builder) {
|
||||
builder.withDetail("database", this.connectionFactory.getMetadata().getName());
|
||||
return (StringUtils.hasText(this.validationQuery)) ? validateWithQuery(builder)
|
||||
: validateWithConnectionValidation(builder);
|
||||
}
|
||||
|
||||
private Mono<Health> validateWithQuery(Builder builder) {
|
||||
private Mono<Health> validateWithQuery(Health.Builder builder) {
|
||||
builder.withDetail("validationQuery", this.validationQuery);
|
||||
Mono<Object> connectionValidation = Mono.usingWhen(this.connectionFactory.create(),
|
||||
(conn) -> Flux.from(conn.createStatement(this.validationQuery).execute())
|
||||
@@ -90,7 +89,7 @@ public class ConnectionFactoryHealthIndicator extends AbstractReactiveHealthIndi
|
||||
return connectionValidation.map((result) -> builder.up().withDetail("result", result).build());
|
||||
}
|
||||
|
||||
private Mono<Health> validateWithConnectionValidation(Builder builder) {
|
||||
private Mono<Health> validateWithConnectionValidation(Health.Builder builder) {
|
||||
builder.withDetail("validationQuery", "validate(REMOTE)");
|
||||
Mono<Boolean> connectionValidation = Mono.usingWhen(this.connectionFactory.create(),
|
||||
(connection) -> Mono.from(connection.validate(ValidationDepth.REMOTE)), Connection::close,
|
||||
@@ -17,4 +17,4 @@
|
||||
/**
|
||||
* Health integration for R2DBC.
|
||||
*/
|
||||
package org.springframework.boot.r2dbc.actuate.health;
|
||||
package org.springframework.boot.r2dbc.health;
|
||||
@@ -20,8 +20,8 @@ import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.health.HealthContributorAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.r2dbc.actuate.health.ConnectionFactoryHealthIndicator;
|
||||
import org.springframework.boot.r2dbc.autoconfigure.R2dbcAutoConfiguration;
|
||||
import org.springframework.boot.r2dbc.health.ConnectionFactoryHealthIndicator;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.r2dbc.actuate.health;
|
||||
package org.springframework.boot.r2dbc.health;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.Collections;
|
||||
@@ -32,8 +32,8 @@ import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.test.StepVerifier;
|
||||
|
||||
import org.springframework.boot.actuate.health.ReactiveHealthIndicator;
|
||||
import org.springframework.boot.actuate.health.Status;
|
||||
import org.springframework.boot.health.ReactiveHealthIndicator;
|
||||
import org.springframework.boot.health.Status;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.entry;
|
||||
Reference in New Issue
Block a user