我正在尝试构建一种方法,该方法应该对一个外部端点执行许多 HTTP 请求,而一个查询参数小于 45000。
我需要这样做,因为外部端点允许我获取 100 个项目,但要获取的项目超过 44000 个。
private int offset = 0;
public Flux<List<Model>> getItems() {
return Flux.from(
webClientBuilder
.build()
.get()
.uri(uriBuilder -> uriBuilder
.path("/getItems")
.queryParam("limit", 100)
.queryParam("offset", getOffset())
.build())
.retrieve()
.bodyToMono(Model.class)
.doOnSuccess(System.out::println)
.flatMap(model -> {
setOffset(getOffset() + 100);
log.info("Offset: " + getOffset());
return repository.saveAll(model.getData().getResults()).collectList();
}).delayElement(Duration.ofSeconds(15)))
.repeat(() -> getOffset() <= 45000);
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
它似乎有效,因为记录偏移参数增加但 HTTP 请求的偏移量等于 0。该方法返回前 100 个项目而不是 44566 个项目