【发布时间】:2020-03-22 07:37:10
【问题描述】:
我必须使用 Webclient 进行分页 API 调用,最后合并所有结果。 例如:个人最新的 1000 笔交易详情。 在一次通话中,我将在 json 响应(列表)中获得最多 100 个对象。 我最多只能获取此人的 1000 条记录。
在伪代码 - java 中,它可能看起来像这样
int Total = 1000;
int maxEachCall = 100;
int noOfCalls = maxTotal/maxEachCall;
int startIndex = 0;
List<MyDto> mailList = new ArrayList();
for(int i =startIndex; i<noOfCalls ;i+100){
List<MyDto> list = webClient.get().uri(baseUri+"?startIndex"+startIndex)
.retrieve()
.bodyToMono(MyDto.class)
.retry(3)
.block();
mainList.addAll(list);
if(startIndex>900 || list.size()<100){
break;
}
}
如何在 spring mvc 中不阻塞而以反应方式编写相同的东西?
这样的???我不知道。帮帮我
int Total = 1000;
int maxEachCall = 100;
int noOfCalls = maxTotal/maxEachCall;
int startIndex = 0;
Flux.range(1,noOfCalls)
.flatMap(
// tried to call api using startIndex but can't use startIndex here or manipulate it
)
.doOnError(e->LOGGER.info("Exception occured ",e))
.blockLast(); ???
【问题讨论】:
标签: spring-mvc asynchronous spring-webflux project-reactor spring-webclient