简体   繁体   English

Spring WebFlux和WebClient更改对错误的响应

[英]Spring WebFlux and WebClient change response on error

I have some controller method like 我有一些控制器方法,例如

@PostMapping("/*")
fun proxy(@RequestBody body: String): Mono<ByteArray> {
    return roundRobinBean.getNext()
        .post()
        .uri("/api")
        .body(BodyInserters.fromObject(body))
        .retrieve()
        .bodyToMono<ByteArray>()
        .doOnSuccess{
            threadPool.submit(PutToCacheJob(body, it, cacheBean))
        }
        .doOnError{
            logger.error(it.message, it)
        }
}

roundRobinBean return WebClient for some host. roundRobinBean返回某些主机的WebClient。 If i get connection timeout exception or get 500 response i need call another host or return data from cache. 如果我收到连接超时异常或得到500响应,则需要呼叫另一台主机或从缓存中返回数据。 Have mono some handler for changing inner data? 有单声道的一些处理程序来更改内部数据吗?

您可以使用onErrorResume运算符,该运算符可让您定义发生错误时的后备状态。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM