Spring boot Spring Boot WebClient OAuth-在同时命中多个请求时超时

Spring boot Spring Boot WebClient OAuth-在同时命中多个请求时超时,spring-boot,spring-webflux,spring-security-oauth2,Spring Boot,Spring Webflux,Spring Security Oauth2,我在webflux和oauth2客户端上使用SpringBoot2.4.4,我的代码是SuccessfulGetfromAPI服务器,当我使用postman时,每次点击的响应时间大约为500毫秒。但当我使用jMeter同时命中10-100个数据时,会导致错误超时。我的代码是错的还是我的代码中遗漏了什么 这是我的OAuth配置: @Bean public ReactiveOAuth2AuthorizedClientManager authorizedClientManager(ReactiveCl

我在webflux和oauth2客户端上使用SpringBoot2.4.4,我的代码是SuccessfulGetfromAPI服务器,当我使用postman时,每次点击的响应时间大约为500毫秒。但当我使用jMeter同时命中10-100个数据时,会导致错误超时。我的代码是错的还是我的代码中遗漏了什么

这是我的OAuth配置:

@Bean
public ReactiveOAuth2AuthorizedClientManager authorizedClientManager(ReactiveClientRegistrationRepository clientRegistrationRepository, ReactiveOAuth2AuthorizedClientService authorizedClientService) {
    ReactiveOAuth2AuthorizedClientProvider authorizedClientProvider = ReactiveOAuth2AuthorizedClientProviderBuilder.builder().clientCredentials().authorizationCode().refreshToken().build();

    AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager authorizedClientManager = new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(clientRegistrationRepository, authorizedClientService);
    authorizedClientManager.setAuthorizedClientProvider(authorizedClientProvider);
    return authorizedClientManager;
}

@Bean
public WebClient webClient(ReactiveOAuth2AuthorizedClientManager authorizedClientManager) {
    ServerOAuth2AuthorizedClientExchangeFilterFunction oauth = new ServerOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
    oauth.setDefaultClientRegistrationId("custom-registrationId");

    WebClient.Builder builder = WebClient.builder();
    builder.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE);
    builder.filter(oauth);
    return builder.build();
}
我的webclient上的实现使用block,因为我需要在发送到客户端之前解析来自API的响应

@Autowired
private WebClient webClient;

String response = webClient.post()
    .uri(URL_API)
    .bodyValue(jsonRequest)
    .exchangeToMono(clientResponse -> clientResponse.bodyToMono(String.class))
    .timeout(Duration.ofMillis(10000))
    .share().block();
问题是当我使用jMeter时。当我直接访问API服务器时,一切都是成功的,但当我通过应用程序时,一切都不是成功的

reactor.core.Exceptions$ReactiveException: java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 10000ms in 'flatMap' (and no fallback has been configured)
多亏了,我学会了如何编写代码。因此,我认为在这个非阻塞框架中,最好是这样编写,而不是阻塞

Mono<String> response = webClient.post()
    .uri(URL_API)
    .bodyValue(jsonRequest)
    .exchangeToMono(clientResponse -> clientResponse.bodyToMono(String.class))
    .timeout(Duration.ofMillis(10000));

Mono<Object> result = response.map(res -> {
    // Throw the logic parsing and other from response in here
})

return result;

不要在非阻塞框架中使用块。使用平面图或地图。嘿,谢谢。我不知道我能不能用它,因为这个反应式框架,我不能阻止一切,对吗?