java - 测试 http 连接

标签 java spring-boot

我正在制作一个 Spring Boot 应用程序,我希望在某些 http 连接上启用重试。我对这个应用程序如何比较状态代码并触发重试执行的函数有点困惑。对此的任何见解都会有所帮助,我假设有一个函数可以检索状态代码,但我无法找到它。下面是我创建的类:

公共(public)类 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();
}

关于java - 测试 http 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58206967/

相关文章:

java - ANTLR 解析器规则中的/s/S

spring - pubsub 中订阅者的重试设置是什么以及如何在 spring 应用程序中正确设置它们?

java - 将不同属性类型解码到同一 java 对象时出现 NullPointerException

java - tomcat 7 + freebsd 7.2(32 位)多线程应用程序抛出 OutOfMemoryError : could not create native thread

java - 在线程更新时读取 boolean 值数组

java - 设计: Java and returning self-reference in setter methods

java - 如何处理Spring Boot注释中的403禁止错误?

spring-boot - Log4J2 在很多层面上都无法在 Spring Boot 上工作

java - 如何异步启动 Spring Batch 作业

java - Spring Hibernate 中实体字段的本地化