我正在制作一个Spring Boot应用程序,希望在其中启用对某些HTTP连接的重试。我对该应用程序如何比较状态代码并触发函数以重试执行感到困惑。关于此的任何见解都会有所帮助,我假设有一个检索状态码的函数,但我找不到它。以下是我创建的班级:

公共类HttpFailedConnectionRetryPolicy扩展了ExceptionClassifierRetryPolicy {

@Value("SomeValue")
private Integer maxAttempts;

public HttpFailedConnectionRetryPolicy() {
    final NeverRetryPolicy doNotRetry = new NeverRetryPolicy();
    final SimpleRetryPolicy simpleRetryPolicy = new SimpleRetryPolicy();
    simpleRetryPolicy.setMaxAttempts(maxAttempts);

    this.setExceptionClassifier(new Classifier<Throwable, RetryPolicy>() {
        @Override
        public RetryPolicy classify(Throwable classifiable) {
            if (condition) {
                return simpleRetryPolicy;
            }
            return new NeverRetryPolicy();
        }
    });
}


}

最佳答案

如果您的异常类型为HttpStatusCodeException,则可以检查e.getStatusCode()

你的情况应该是

public RetryPolicy classify(Throwable classifiable) {
        if (classifiable instanceof HttpStatusCodeException) {
            if(((HttpStatusCodeException)classifiable).getStatusCode().value!=404)
            return simpleRetryPolicy;
        }
        return new NeverRetryPolicy();
}

10-08 08:15