Все еще не понимаю, почему ниже работает, но код из OP не работает.Добавлен Flux.fromIterable внутри последней flatMap вместо ранее, и теперь используется addAll для добавления набора изготовления, поскольку наборы наборов теперь идут по одному за раз вместо того, чтобы все они были доступны раньше.
Mono<CarAndManufactures> requestCarAndManufactures(Request req) {
final String dealerId = EntityUtil.buildDealerId(req.getDealerRegion(), req.getDealerId());
return webSocketClient.getCars(req.getApiKey(), dealerId)
.map(getCarsResponse -> getCarsResponse
.getResult()
.stream()
.collect(toMap(AppCar::getId,
appCar -> new MutablePropertyManager(appCar.getProps().getSize()))))
.map(stringImmutablePropertiesMap -> {
CarAndManufactures CarAndManufactures = new CarAndManufactures();
CarAndManufactures.setCars(stringImmutablePropertiesMap);
return CarAndManufactures;
})
.flatMap(CarAndManufactures ->
Flux.fromIterable(CarAndManufactures.getCars().keySet())
.flatMap(s -> webSocketClient.getManufacturesByCar(req.getApiKey(), s)
.map(getManufacturesResponse -> getManufacturesResponse
.getResult()
.stream()
.map(AppManufacture::getId)
.collect(toSet()))
.map(ManufactureIds -> {
CarAndManufactures.addManufactures(ManufactureIds);
return CarAndManufactures;
}))
.last())
.log("Car And Manufactures");
}