nav*_*ain 10 project-reactor reactor-netty spring-webflux
在我的微服务中,我必须从地方获取数据。有些 URL 是固定的,但有些不是。如果我的基本 URL 发生变化,我是否需要一次又一次地创建 Webclient。如果不是,那么下面的方法是正确的来创建 Web 客户端。WebClient.create(); 后来每当我打电话时都会一次又一次地更改 URI。根据我的理解,创建 WebClient 必须是一些繁重的操作。
ReactorClientHttpConnector connector = new ReactorClientHttpConnector(
options -> options.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, requestTimeout).compression(true)
.afterNettyContextInit(ctx -> ctx.addHandlerLast(new ReadTimeoutHandler(readTimeout, TimeUnit.MILLISECONDS))));
return WebClient.builder()
.clientConnector(connector)
.baseUrl(hostURL)
.build();
Run Code Online (Sandbox Code Playgroud)
Bri*_*zel 13
WebClient实例是可重用的。您需要拥有不同客户端实例的唯一原因是为了满足特定需求:可观察性检测、特定身份验证客户端过滤器、特定连接/读/写超时。
不同的基本 URI 不是创建不同实例的充分理由。创建实例而不设置基本 URI 是完全没问题的,这只是为了在一遍又一遍地调用同一主机时避免重复的便利。
这完全没问题:
WebClient webClient = WebClient.builder().build();
Mono<Resource> resource = webClient.get().uri("http://example.org/resource").retrieve()...;
Mono<Project> project = webClient.get().uri("http://spring.io/projects/spring-boot").retrieve()...;
Run Code Online (Sandbox Code Playgroud)
请注意,如果您使用 Spring Boot,则应考虑使用提供的构建您的 webclient 实例WebClient.Builder(请参阅Spring Boot 参考文档)。
| 归档时间: |
|
| 查看次数: |
4227 次 |
| 最近记录: |