Ограничить максимальное количество потоков при использовании ParallelFlux - PullRequest
0 голосов
/ 09 января 2020

Как я могу ограничить потоки для задачи, которая выполняется параллельно? Проблема проста - пока мой планировщик работает, я больше ничего не могу сделать (получить информацию, используя почтальон и др. c). Есть ли способ решить эту проблему? Кроме того, я попытался установить количество потоков в потоке, например, с помощью параллельного (3) .runOn (Schedulers.parallel ()), и все же моя программа заблокирована.

@Scheduled(fixedRate = 60000L)
@PostConstruct
public void fillMap() {
    Flux.fromIterable(proxyParserService.getProxyList())
            .parallel()
            .runOn(Schedulers.parallel())
            .flatMap(geoDataService::getData)
//some logic here...

Также не говоря уже о упоминании , что у меня есть метод flatmap с параллельным открытием соединений:

    public Mono<Address> getData(Address proxy) {
    WebClient webClient = WebClient.builder()
            .baseUrl(String.format(URL, proxy.getHost()))
            .build();
    WebClient.RequestBodyUriSpec request = webClient.method(HttpMethod.GET);
    return request.retrieve()
            .onStatus(HttpStatus::isError, clientResponse -> {
                log.error("Error while calling endpoint {} with status code {}",
                        URL, clientResponse.statusCode());
                throw new RuntimeException("Error while calling geolocation endpoint");
            })
            .bodyToMono(Address.class)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...