
driven-adapter.consumer-rest.reactive-rest-consumer.config.rest-consumer-config.mustache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scaffold-clean-architecture Show documentation
Show all versions of scaffold-clean-architecture Show documentation
Gradle plugin to create a clean application in Java that already works, It follows our best practices!
package {{package}}.consumer.config;
import io.netty.handler.timeout.ReadTimeoutHandler;
import io.netty.handler.timeout.WriteTimeoutHandler;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.http.client.reactive.ClientHttpConnector;
import org.springframework.http.client.reactive.ReactorClientHttpConnector;
import org.springframework.web.reactive.function.client.WebClient;
import reactor.netty.http.client.HttpClient;
import static io.netty.channel.ChannelOption.CONNECT_TIMEOUT_MILLIS;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
@Configuration
public class RestConsumerConfig {
private final String url;
private final int timeout;
public RestConsumerConfig(@Value("${adapter.restconsumer.url}") String url,
@Value("${adapter.restconsumer.timeout}") int timeout) {
this.url = url;
this.timeout = timeout;
}
@Bean
public WebClient getWebClient(WebClient.Builder builder) {
return builder
.baseUrl(url)
.defaultHeader(HttpHeaders.CONTENT_TYPE, "application/json")
.clientConnector(getClientHttpConnector())
.build();
}
private ClientHttpConnector getClientHttpConnector() {
/*
IF YO REQUIRE APPEND SSL CERTIFICATE SELF SIGNED: this should be in the default cacerts trustore
*/
return new ReactorClientHttpConnector(HttpClient.create()
.compress(true)
.keepAlive(true)
.option(CONNECT_TIMEOUT_MILLIS, timeout)
.doOnConnected(connection -> {
connection.addHandlerLast(new ReadTimeoutHandler(timeout, MILLISECONDS));
connection.addHandlerLast(new WriteTimeoutHandler(timeout, MILLISECONDS));
}));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy