java中spring的web支持nio,Spring WebClient NIO功能和问题域,与Spring Webflux一起使用

  • Post author:
  • Post category:java


我正在使用最新版本的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中看到了这个?