【发布时间】:2020-01-21 03:14:56
【问题描述】:
我一直在学习 spring webflux 并陷入了这个困境。
我已使用 WebClient 从 Spring 应用程序向 REST API 发出请求。我想根据响应重试请求。假设响应具有属性status: 'not-ready',那么我需要在一秒钟后重试相同的操作。
我尝试了以下方式,但不知道如何实现它
public Flux<Data> makeHttpRequest(int page) {
Flux<Data> data = webClient.get()
.uri("/api/users?page=" + page)
.retrieve()
.bodyToFlux(Data.class);
return data;
}
GET : /api/users returns the folowing response
ex: 1 {
status: 'ready',
data: [......]
}
ex: 2 {
status: 'not-ready',
data: null
}
任何帮助将不胜感激。
【问题讨论】:
-
您需要结合使用
Mono.retryWhen和exchange()(而不是retrieve) - 请参阅文档以获取示例projectreactor.io/docs/core/release/reference/#faq.retryWhen -
您好,可以先告诉我几件事 1. 您创建的 Rest api 总是会给您响应,例如向您展示 2. 哪些第一手资料正在使用以及什么类型的调用来获得 rest end 称为 Like ( Http 异步或同步)
标签: java spring netty spring-webflux project-reactor