Я новичок в webflux и пытаюсь выполнить несколько моно с Flux
. Но я думаю, что я делаю это неправильно ... это лучший способ выполнить несколько Mono
и собрать их в список?
Вот мой код:
mainService.getAllBranch()
.flatMapMany(branchesList -> {
List<Branch> branchesList2 = (List<Branch>) branchesList.getData();
List<Mono<Transaction>> trxMonoList= new ArrayList<>();
branchesList2.stream().forEach(branch -> {
trxMonoList.add(mainService.getAllTrxByBranchId(branch.branchId));
});
return Flux.concat(trxMonoList); // <--- is there any other way than using concat?
})
.collectList()
.flatMap(resultList -> combineAllList());
interface MainService{
Mono<RespBody> getAllBranch();
Mono<RespBody> getAllTrxByBranchId(String branchId); //will return executed url ex: http://trx.com/{branchId}
}
пока что мой код выше, я могу объяснить это так:
- Получить все ветви
- перебрать все
branchesList2
и добавить его к trxMonoList
- return
Flux.concat
, я не уверен, что это правильный путь или нет. но он работает - объединить весь список
Я просто запутался, это правильный способ использования Flux
в моем контексте? или есть какой-то лучший способ добиться того, что я пытаюсь сделать?