diff --git a/module-support/src/main/kotlin/de/twomartens/support/configuration/RestClientConfiguration.kt b/module-support/src/main/kotlin/de/twomartens/support/configuration/RestClientConfiguration.kt index a5e2d43..d068f7e 100644 --- a/module-support/src/main/kotlin/de/twomartens/support/configuration/RestClientConfiguration.kt +++ b/module-support/src/main/kotlin/de/twomartens/support/configuration/RestClientConfiguration.kt @@ -3,11 +3,15 @@ package de.twomartens.support.configuration import de.twomartens.support.interceptor.HeaderInterceptorRest import de.twomartens.support.interceptor.LoggingInterceptorRest import de.twomartens.support.property.RestTemplateTimeoutProperties +import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder +import org.springframework.boot.http.client.ClientHttpRequestFactorySettings import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration +import org.springframework.http.client.ClientHttpRequestFactory import org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter import org.springframework.web.client.RestClient + @Configuration open class RestClientConfiguration { @Bean("restClient") @@ -21,4 +25,22 @@ open class RestClientConfiguration { .requestInterceptors { listOf(headerInterceptorRest, loggingInterceptor) } .build() } + + @Bean("restClientRestHealthIndicator") + open fun restClientRestHealthIndicator( + headerInterceptorRest: HeaderInterceptorRest, + restTemplateTimeoutProperties: RestTemplateTimeoutProperties + ): RestClient { + return RestClient.builder() + .requestInterceptors { listOf(headerInterceptorRest) } + .requestFactory(customRequestFactory(restTemplateTimeoutProperties)) + .build() + } + + fun customRequestFactory(restTemplateTimeoutProperties: RestTemplateTimeoutProperties): ClientHttpRequestFactory { + val settings: ClientHttpRequestFactorySettings = ClientHttpRequestFactorySettings.defaults() + .withConnectTimeout(restTemplateTimeoutProperties.connectionRestTemplateTimeoutInMillis) + .withReadTimeout(restTemplateTimeoutProperties.readTimeoutRestTemplateInMillis) + return ClientHttpRequestFactoryBuilder.detect().build(settings) + } } \ No newline at end of file diff --git a/module-support/src/main/kotlin/de/twomartens/support/monitoring/actuator/RestHealthIndicator.kt b/module-support/src/main/kotlin/de/twomartens/support/monitoring/actuator/RestHealthIndicator.kt index 3c5c59b..b16db24 100644 --- a/module-support/src/main/kotlin/de/twomartens/support/monitoring/actuator/RestHealthIndicator.kt +++ b/module-support/src/main/kotlin/de/twomartens/support/monitoring/actuator/RestHealthIndicator.kt @@ -7,7 +7,7 @@ import org.springframework.boot.actuate.health.HealthIndicator import org.springframework.boot.actuate.health.Status import org.springframework.boot.autoconfigure.web.ServerProperties import org.springframework.stereotype.Component -import org.springframework.web.client.RestTemplate +import org.springframework.web.client.RestClient import java.security.SecureRandom import java.time.Clock @@ -31,7 +31,7 @@ import java.time.Clock class RestHealthIndicator( clock: Clock, interceptor: HeaderInterceptorRest, serverProperties: ServerProperties, - private val restTemplateRestHealthIndicator: RestTemplate, + private val restClientRestHealthIndicator: RestClient, private val serviceProperties: HealthCheckProperties ) : AbstractHealthIndicator(clock, Preparable { interceptor.markAsHealthCheck() }), HealthIndicator { private val randomizer = SecureRandom()