Integrate Apache http client with WebClient
This commit introduces a ClientHttpConnector implementation backed by Apache HttpComponents HttpClient 5.0. Fixes gh-24700
This commit is contained in:
committed by
Arjen Poutsma
parent
859953fe81
commit
3bc1d42dcd
@@ -369,6 +369,33 @@ shows:
|
||||
<2> Plug the connector into the `WebClient.Builder`.
|
||||
|
||||
|
||||
|
||||
[[webflux-client-builder-http-components]]
|
||||
=== HttpComponents
|
||||
|
||||
The following example shows how to customize Apache HttpComponents `HttpClient` settings:
|
||||
|
||||
[source,java,indent=0,subs="verbatim,quotes",role="primary"]
|
||||
.Java
|
||||
----
|
||||
HttpAsyncClientBuilder clientBuilder = HttpAsyncClients.custom();
|
||||
clientBuilder.setDefaultRequestConfig(...);
|
||||
CloseableHttpAsyncClient client = clientBuilder.build();
|
||||
ClientHttpConnector connector = new HttpComponentsClientHttpConnector(client);
|
||||
|
||||
WebClient webClient = WebClient.builder().clientConnector(connector).build();
|
||||
----
|
||||
[source,kotlin,indent=0,subs="verbatim,quotes",role="secondary"]
|
||||
.Kotlin
|
||||
----
|
||||
val client = HttpAsyncClients.custom().apply {
|
||||
setDefaultRequestConfig(...)
|
||||
}.build()
|
||||
val connector = HttpComponentsClientHttpConnector(client)
|
||||
val webClient = WebClient.builder().clientConnector(connector).build()
|
||||
----
|
||||
|
||||
|
||||
[[webflux-client-retrieve]]
|
||||
== `retrieve()`
|
||||
|
||||
|
||||
@@ -312,8 +312,9 @@ request handling, on top of which concrete programming models such as annotated
|
||||
controllers and functional endpoints are built.
|
||||
* For the client side, there is a basic `ClientHttpConnector` contract to perform HTTP
|
||||
requests with non-blocking I/O and Reactive Streams back pressure, along with adapters for
|
||||
https://github.com/reactor/reactor-netty[Reactor Netty] and for the reactive
|
||||
https://github.com/jetty-project/jetty-reactive-httpclient[Jetty HttpClient].
|
||||
https://github.com/reactor/reactor-netty[Reactor Netty], reactive
|
||||
https://github.com/jetty-project/jetty-reactive-httpclient[Jetty HttpClient]
|
||||
and https://hc.apache.org/[Apache HttpComponents].
|
||||
The higher level <<web-reactive.adoc#webflux-client, WebClient>> used in applications
|
||||
builds on this basic contract.
|
||||
* For client and server, <<webflux-codecs, codecs>> for serialization and
|
||||
|
||||
Reference in New Issue
Block a user