Как я могу ограничить потоки для задачи, которая выполняется параллельно? Проблема проста - пока мой планировщик работает, я больше ничего не могу сделать (получить информацию, используя почтальон и др. 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)