我正在使用最新版本的Spring – Spring 5 .
我正在开发http客户端的WebService“聚合器”,有点像路由请求到外部WebServices,接收响应后接收响应,做一些数据操作并回复我的HTTP服务的客户端 .
为了在我的应用程序中创建http客户端,我基本上使用可用于构建Reactive App的新WebClient .
我的代码围绕以下样式:
private WebClient client = WebClient
.builder()
.clientConnector(new ReactorClientHttpConnector())
.baseUrl(“http://webservice”)
.build();
// Later calling like:
client.method(HttpMethod.POST) // Or GET, whatever
.uri(builder -> builder
.path(“search”)
.build())
.headers(defaultHeaders())
.exchange()
.block()
稍后,我在我自己的HTTP API中公开了这个调用的结果,为简单起见,我不会在这里发布 .
作为此APP的一部分,我使用Netty作为嵌入式HTTP层来为我的应用程序的客户提供服务 . (当我选择Spring Boot Starter中的 Spring Webflux 时,它也是默认的) .
我的用例不一定是Reactive Application,我不需要执行任何Streaming或back-pressure逻辑 .
但是,我的理解是使用Netty,我可以在非阻塞时尚中对外部HTTP服务做所有请求,这对我的用例很有用 .
Questions are:
1 . 关于NIO功能是否正确,我可能从中受益?
2 . 如果我正在使用Spring 5的这个WebClient接口,我会丢失一些东西,或者在我的用例中获得一些东西,因为我没有做反应性的东西?
3 . org.springframework.web.reactive.function.client.WebClient 应该满足我的要求吗?
4 . WebClient是构建功能管道的好选择吗?我问,因为我打算采取一个电话的结果,并进行后续调用,我打算使用 CompletableFutures ,我在WebClient API中看到了这个?