Package org.springframework.http.client.reactive

# Class ReactorClientHttpConnector

java.lang.Object
org.springframework.http.client.reactive.ReactorClientHttpConnector

All Implemented Interfaces:
  `org.springframework.context.Lifecycle`, `org.springframework.context.Phased`, `org.springframework.context.SmartLifecycle`, `ClientHttpConnector`

public class ReactorClientHttpConnector extends Object implements ClientHttpConnector, org.springframework.context.SmartLifecycle
Reactor-Netty implementation of `ClientHttpConnector`.

This class implements `SmartLifecycle` and can be optionally declared as a Spring-managed bean.

Since:
  5.0
Author:
  Brian Clozel, Rossen Stoyanchev, Sebastien Deleuze, Juergen Hoeller
See Also:
  - `HttpClient`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final io.netty.util.AttributeKey<Map<String,Object>>`
`ATTRIBUTES_KEY`
Channel attribute key under which `WebClient` request attributes are stored as a Map.

### Fields inherited from interface org.springframework.context.SmartLifecycle

`DEFAULT_PHASE`

## Constructor Summary

Constructors
Constructor
Description
`ReactorClientHttpConnector()`
Default constructor.
`ReactorClientHttpConnector(ReactorResourceFactory resourceFactory, Function<reactor.netty.http.client.HttpClient,reactor.netty.http.client.HttpClient> mapper)`
Constructor with externally managed Reactor Netty resources, including `LoopResources` for event loop threads, and `ConnectionProvider` for the connection pool.
`ReactorClientHttpConnector(reactor.netty.http.client.HttpClient httpClient)`
Constructor with a pre-configured `HttpClient` instance.

## Method Summary

Modifier and Type
Method
Description
`reactor.core.publisher.Mono<ClientHttpResponse>`
`connect(HttpMethod method, URI uri, Function<? super ClientHttpRequest,reactor.core.publisher.Mono<Void>> requestCallback)`
Connect to the origin server using the given `HttpMethod` and `URI` and apply the given `requestCallback` when the HTTP request of the underlying API can be initialized and written to.
`int`
`getPhase()`
`boolean`
`isRunning()`
`void`
`start()`
`void`
`stop()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface org.springframework.context.SmartLifecycle

`isAutoStartup, stop`

## Field Details

### ATTRIBUTES_KEY

public static final io.netty.util.AttributeKey<Map<String,Object>> ATTRIBUTES_KEY
Channel attribute key under which `WebClient` request attributes are stored as a Map.

Since:
  6.2

## Constructor Details

### ReactorClientHttpConnector

public ReactorClientHttpConnector()
Default constructor. Initializes `HttpClient` via:

    HttpClient.create().compress(true)

### ReactorClientHttpConnector

public ReactorClientHttpConnector(reactor.netty.http.client.HttpClient httpClient)
Constructor with a pre-configured `HttpClient` instance.

Parameters:
  `httpClient` - the client to use
Since:
  5.1

### ReactorClientHttpConnector

public ReactorClientHttpConnector(ReactorResourceFactory resourceFactory, Function<reactor.netty.http.client.HttpClient,reactor.netty.http.client.HttpClient> mapper)
Constructor with externally managed Reactor Netty resources, including `LoopResources` for event loop threads, and `ConnectionProvider` for the connection pool.

This constructor should be used only when you don't want the client to participate in the Reactor Netty global resources. By default the client participates in the Reactor Netty global resources held in `HttpResources`, which is recommended since fixed, shared resources are favored for event loop concurrency. However, consider declaring a `ReactorResourceFactory` bean with `globalResources=true` in order to ensure the Reactor Netty global resources are shut down when the Spring ApplicationContext is stopped or closed and restarted properly when the Spring ApplicationContext is (with JVM Checkpoint Restore for example).

Parameters:
  `resourceFactory` - the resource factory to obtain the resources from
  `mapper` - a mapper for further initialization of the created client
Since:
  5.1

## Method Details

### connect

public reactor.core.publisher.Mono<ClientHttpResponse> connect(HttpMethod method, URI uri, Function<? super ClientHttpRequest,reactor.core.publisher.Mono<Void>> requestCallback)
Description copied from interface: `ClientHttpConnector`
Connect to the origin server using the given `HttpMethod` and `URI` and apply the given `requestCallback` when the HTTP request of the underlying API can be initialized and written to.

Specified by:
  `connect` in interface `ClientHttpConnector`
Parameters:
  `method` - the HTTP request method
  `uri` - the HTTP request URI
  `requestCallback` - a function that prepares and writes to the request, returning a publisher that signals when it's done writing. Implementations can return a `Mono<Void>` by calling `ReactiveHttpOutputMessage.writeWith(org.reactivestreams.Publisher<? extends org.springframework.core.io.buffer.DataBuffer>)` or `ReactiveHttpOutputMessage.setComplete()`.
Returns:
  publisher for the `ClientHttpResponse`

### start

public void start()

Specified by:
  `start` in interface `org.springframework.context.Lifecycle`

### stop

public void stop()

Specified by:
  `stop` in interface `org.springframework.context.Lifecycle`

### isRunning

public boolean isRunning()

Specified by:
  `isRunning` in interface `org.springframework.context.Lifecycle`

### getPhase

public int getPhase()

Specified by:
  `getPhase` in interface `org.springframework.context.Phased`
Specified by:
  `getPhase` in interface `org.springframework.context.SmartLifecycle`