#java #reactive #spring-reactive #spring-reactor
#ява #реактивный #spring-реактивный #пружинный реактор
Вопрос:
Допустим, у меня есть ProductSupplier
которые позволяют получить продукт по идентификатору. Но у него есть ограничения, и по одному запросу вы можете загрузить только один продукт.
public interface ProductSupplier {
public Mono<Product> getById(Long productId);
}
Сейчас я пишу, ProductService
в котором мне нужно получить список продуктов по идентификатору
public interface ProductService {
ProductSupplier supplier;
public Mono<List<Product>> getByIds(Collection<Long> ids) {
return ids.stream()
.map(supplier::getById)//Stream<Mono<Product>>
//how to get Flux<Product> here?
.collectList();
}
}
Ответ №1:
Вы могли бы работать с потоком напрямую вместо потока:
Flux<Product> flux = Flux
.fromIterable(ids)
.flatMap(supplier::getById);