当前位置: 首页 > 知识库问答 >
问题:

是否可以基于HttpStatus状态代码在spring-retry中设置RetryPolicy?

张权
2023-03-14

是否可以根据错误状态代码在spring retry(https://github.com/spring-projects/spring-retry)中设置RetryPolicy?例如,我想用httpservererrorexception重试httpstatus.internal_server_error状态代码503。因此,它应该忽略所有其他错误代码--[500-502]和[504-511]。

共有1个答案

冯星阑
2023-03-14

RestTemplate具有SetErrorHandler选项,而DefaultResponseErrorHandler是默认选项。

其代码如下所示:

public void handleError(ClientHttpResponse response) throws IOException {
    HttpStatus statusCode = getHttpStatusCode(response);
    switch (statusCode.series()) {
        case CLIENT_ERROR:
            throw new HttpClientErrorException(statusCode, response.getStatusText(),
                    response.getHeaders(), getResponseBody(response), getCharset(response));
        case SERVER_ERROR:
            throw new HttpServerErrorException(statusCode, response.getStatusText(),
                    response.getHeaders(), getResponseBody(response), getCharset(response));
        default:
            throw new RestClientException("Unknown status code [" + statusCode + "]");
    }
}

因此,您可以为该方法提供自己的实现,以简化围绕所需状态代码的RetryPolicy

 类似资料:
  • 我正在执行一个批处理调用,其中批处理API的总体响应是成功的,但批处理的一些调用可能是失败的,因此事件如果REST模板提供成功的响应,我希望解析响应,如果在解析时发现错误状态代码,我希望再次重试整个批处理调用。问题是spring重试没有从REST模板中检测到任何异常,所以它没有进行重试。 ResponseEntity响应=restTemplate.exchange(requestEntity,st

  • 是否可以根据错误状态代码在spring重试中设置RetryPolicy?例如,我不想在HttpStatus.bad_request状态代码为400的HttpClientErrorException上重试。因此,它应该忽略所有其他错误代码--4xx。 我使用Spring Integration http outboundGateway来调用服务器。 现在,在我的RequestHandlerRetry

  • 假设我有一个依赖于其他状态的状态(例如,当A改变时,我希望B改变)。 在useEffect钩子中创建一个观察a并设置B的钩子是否合适? 效果是否会层叠,当我单击按钮时,第一个效果会激发,导致b发生变化,导致第二个效果激发,然后再进行下一次渲染?这样构造代码有没有性能方面的缺点?

  • 我有以下代码: 可以用代码设置吗?如果是,怎么做? 我想按代码设置,因为我想解决另一个问题,请单击此处 一个人告诉我使用lookup get selector,但它返回null。 下面的代码就是我所做的?你能告诉我怎么了吗? 任何帮助都将不胜感激。

  • 正如标题所暗示的,我希望在发生异常后更改http状态。简短的背景是,为了能够显示错误页面,我需要向客户机发送一个200的状态代码。(在错误状态代码中,它转储数据并显示一个通用的错误弹出窗口) 为了测试这一点,我有: 令人困惑的(也许不是?)事情是,如果我从errorPage控制器返回一个响应实体并设置状态代码,这将被接受。例如: 我认为这不是一个bug,而是一个特性,Spring比我更清楚,我真的

  • 我创建了一个GET服务来重定向到使用POST的网页。我正在尝试使用,因为有了它,我可以发送请求服务的正文和标头,并且我已经实现了从服务中获取我需要的信息。 然而,我需要重定向到具有POST服务的服务器,但我不能,因为我不知道如何设置状态代码,我将其重定向到另一台服务器。 这些是我正在使用的函数: