我在 Spring Boot 应用程序中使用 WebClient 调用流式 API。
我想检索元素,直到我收到 10 个元素或 10 秒过去。我希望请求被阻止,直到任何一个先发生。
WebClient client = WebClient.builder().baseUrl(URL).build();
List<Item> items = client
.get()
.retrieve()
.bodyToFlux(Item.class)
.limitRequest(10)
.collectList()
.block(Duration.ofSeconds(10));
如果在超时之前检索到 10 个项目,调用会很好地返回,并且我有一个包含 10 个项目的填充列表。
但是,如果超时首先通过,则会引发以下异常,并且不会返回任何项目。
java.lang.IllegalStateException: Timeout on blocking read for 10000 MILLISECONDS
如何读取长达 x 秒的流,然后使用 WebClient 返回检索到的项目?