英文:
WebClient get issue TimeoutException while I've set the timeout
问题
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:289) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:274) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:396) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.StrictSubscriber.onNext(StrictSubscriber.java:89) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:117) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
使用的依赖:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>0.9.5.RELEASE</version>
</dependency>
这是我的代码:
HttpClient httpClient = HttpClient.create(ConnectionProvider.builder("adfa").maxConnections(10000).build());
getWebClient = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.codecs(clientCodecConfigurer -> {
lientCodecConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(
objectMapper, new MimeType(MediaType.APPLICATION_JSON, StandardCharsets.UTF_8)));
})
.build();```
<details>
<summary>英文:</summary>
java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 20000ms in 'source(MonoDefer)' (and no fallback has been configured)
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:289) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:274) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:396) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.StrictSubscriber.onNext(StrictSubscriber.java:89) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:117) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) [reactor-core-3.3.3.RELEASE.jar:3.3.3.RELEASE]
at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java) [?:?]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
Use dependency:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>io.projectreactor.netty</groupId>
<artifactId>reactor-netty</artifactId>
<version>0.9.5.RELEASE</version>
</dependency>
This is my code:
```HttpClient httpClient = HttpClient.create(ConnectionProvider.builder("adfa").maxConnections(10000).build());
getWebClient = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.codecs(clientCodecConfigurer -> {
lientCodecConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(
objectMapper, new MimeType(MediaType.APPLICATION_JSON, StandardCharsets.UTF_8)));
})
.build();```
</details>
# 答案1
**得分**: 0
```getWebClient = WebClient.builder().exchangeStrategies(ExchangeStrategies.builder().codecs(codecConfigurer -> codecConfigurer.defaultCodecs().maxInMemorySize(-1)).build()).clientConnector(new ReactorClientHttpConnector(HttpClient.create(ConnectionProvider.newConnection()).compress(true).keepAlive(true))).codecs(clientCodecConfigurer -> clientCodecConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper, new MimeType(MediaType.APPLICATION_JSON, StandardCharsets.UTF_8)))).build();
英文:
Please try with this
WebClient.builder().exchangeStrategies(ExchangeStrategies
.builder()
.codecs(codecConfigurer -> codecConfigurer.defaultCodecs().maxInMemorySize(-1)).build())
.clientConnector(new ReactorClientHttpConnector(HttpClient.create(ConnectionProvider.newConnection()).compress(true).keepAlive(true)))
.codecs(clientCodecConfigurer -> clientCodecConfigurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(
objectMapper, new MimeType(MediaType.APPLICATION_JSON, StandardCharsets.UTF_8))))
.build();
</details>
专注分享java语言的经验与见解,让所有开发者获益!
评论