anchor.diff:  ====
   
   
  +[[webflux-client-builder-reactor-timeout]]
  +==== Timeouts
  +
  +To configure a connection timeout:
  +
  +====
  +[source,java,intent=0]
  +[subs="verbatim,quotes"]
  +----
  +import io.netty.channel.ChannelOption;
  +
  +HttpClient httpClient = HttpClient.create()
  +		.tcpConfiguration(client ->
  +				client.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000));
  +----
  +====
  +
  +To configure a read and/or write timeout values:
  +
  +====
  +[source,java,intent=0]
  +[subs="verbatim,quotes"]
  +----
  +import io.netty.handler.timeout.ReadTimeoutHandler;
  +import io.netty.handler.timeout.WriteTimeoutHandler;
  +
  +HttpClient httpClient = HttpClient.create()
  +		.tcpConfiguration(client ->
  +				client.doOnConnected(conn -> conn
  +						.addHandlerLast(new ReadTimeoutHandler(10))
  +						.addHandlerLast(new WriteTimeoutHandler(10))));
  +----
  +====
  +
  +
   
   [[webflux-client-builder-jetty]]
   === Jetty
  
positive.code: * `WebClient.create()`
  * `WebClient.create(String baseUrl)`
  
  The preceding methods use Reactor Netty `HttpClient` from `io.projectreactor.netty:reactor-netty`
  with default settings and participates in global resources for event loop threads and
  a connection pool. See <<webflux-client-builder-reactor, Reactor Netty configuration>>.
  
  You can use the `WebClient.Builder` for access to further options:
  
  * `uriBuilderFactory`: Customized `UriBuilderFactory` to use as a base URL.
  * `defaultHeader`: Headers for every request.
  * `defaultCookie)`: Cookies for every request.
  * `defaultRequest`: `Consumer` to customize every request.
  * `filter`: Client filter for every request.
  * `exchangeStrategies`: HTTP message reader/writer customizations.
  
negative.code: 
  
  [[webflux-client-exchange]]
  == Using `exchange()`
  
  The `exchange()` method provides more control than the `retrieve` method. The following example is equivalent
  to `retrieve()` but also provides access to the `ClientResponse`:
  