Java 如何设置弹簧控制器以处理背压请求
SpringMVC控制器将用作另一个服务的代理,以提供可能较大的文件 为了避免在任何给定的时间将来自另一个服务的整个WebClient响应存储在内存中,我想使用Spring5+Reactor项目的反应属性,并在浏览器使用它时流式传输它的响应 当前代码看起来像Java 如何设置弹簧控制器以处理背压请求,java,spring,kotlin,reactive-programming,backpressure,Java,Spring,Kotlin,Reactive Programming,Backpressure,SpringMVC控制器将用作另一个服务的代理,以提供可能较大的文件 为了避免在任何给定的时间将来自另一个服务的整个WebClient响应存储在内存中,我想使用Spring5+Reactor项目的反应属性,并在浏览器使用它时流式传输它的响应 当前代码看起来像 import org.springframework.stereotype.Controller import org.springframework.web.bind.annotation.GetMapping import org.sp
import org.springframework.stereotype.Controller
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.reactive.function.client.ClientResponse
import org.springframework.web.reactive.function.client.WebClient
import reactor.core.publisher.Mono
@Controller
class ReportController {
@GetMapping("/reports")
fun getReport(): Mono<ClientResponse> {
val webCient = WebClient.create()
return webCient
.get()
.uri("http://localhost:3333/file")
.exchange()
}
}
- 如何配置控制器以处理
Mono
- 如果响应类型为
,请求是否会被反压?是否需要将其转换为字节块并使其流动Mono
- Spring文档说明了背压的许多好处,但没有回答上述问题,也没有给出任何关于
响应的警告。它仍然是反应性的吗Mono
@RestController
而不是@Controller
。现在Jackson开始并尝试序列化响应嵌套异常是com.fasterxml.Jackson.databind.exc.InvalidDefinitionException:我想没有为org.springframework.web.reactive.function.client.DefaultClientResponse类找到序列化程序错误消息已清除-您没有可以处理ClientResponse
/DefaultClientResponse
类型的序列化程序。
java.lang.IllegalStateException: Could not resolve view with name 'reports'.
at org.springframework.web.reactive.result.view.ViewResolutionResultHandler.lambda$resolveViews$3(ViewResolutionResultHandler.java:277) ~[spring-webflux-5.0.6.RELEASE.jar:5.0.6.RELEASE]