首页 > 解决方案 > 测试http连接

问题描述

我正在制作一个 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();
        }
    });
}

}

标签: javaspring-boot

解决方案


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

你的情况应该是

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

推荐阅读