HttpHandlerConnector uses non-blocking thread

Closes gh-23936
This commit is contained in:
Rossen Stoyanchev
2019-11-06 21:58:02 +00:00
parent 627a9be654
commit 5d2fc2fc32
2 changed files with 27 additions and 2 deletions

View File

@@ -25,6 +25,7 @@ import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import reactor.core.publisher.MonoProcessor;
import reactor.core.scheduler.Schedulers;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpCookie;
@@ -75,6 +76,13 @@ public class HttpHandlerConnector implements ClientHttpConnector {
public Mono<ClientHttpResponse> connect(HttpMethod httpMethod, URI uri,
Function<? super ClientHttpRequest, Mono<Void>> requestCallback) {
return Mono.defer(() -> doConnect(httpMethod, uri, requestCallback))
.subscribeOn(Schedulers.parallel());
}
private Mono<ClientHttpResponse> doConnect(
HttpMethod httpMethod, URI uri, Function<? super ClientHttpRequest, Mono<Void>> requestCallback) {
MonoProcessor<ClientHttpResponse> result = MonoProcessor.create();
MockClientHttpRequest mockClientRequest = new MockClientHttpRequest(httpMethod, uri);