zoukankan      html  css  js  c++  java
  • RestTemplate可以自定义重试次数

    /**
             * 重试处理
             * 默认是重试3次
             */
            //禁用重试(参数:retryCount、requestSentRetryEnabled)
            HttpRequestRetryHandler requestRetryHandler = new DefaultHttpRequestRetryHandler(0, false);
            //自定义重试策略
            HttpRequestRetryHandler myRetryHandler = new HttpRequestRetryHandler() {
     
                public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
                    //Do not retry if over max retry count
                    if (executionCount >= 3) {
                        return false;
                    }
                    //Timeout
                    if (exception instanceof InterruptedIOException) {
                        return false;
                    }
                    //Unknown host
                    if (exception instanceof UnknownHostException) {
                        return false;
                    }
                    //Connection refused
                    if (exception instanceof ConnectTimeoutException) {
                        return false;
                    }
                    //SSL handshake exception
                    if (exception instanceof SSLException) {
                        return false;
                    }
                    
                    HttpClientContext clientContext = HttpClientContext.adapt(context);
                    HttpRequest request = clientContext.getRequest();
                    boolean idempotent = !(request instanceof HttpEntityEnclosingRequest);
                    //Retry if the request is considered idempotent
                    //如果请求类型不是HttpEntityEnclosingRequest,被认为是幂等的,那么就重试
                    //HttpEntityEnclosingRequest指的是有请求体的request,比HttpRequest多一个Entity属性
                    //而常用的GET请求是没有请求体的,POST、PUT都是有请求体的
                    //Rest一般用GET请求获取数据,故幂等,POST用于新增数据,故不幂等
                    if (idempotent) {
                        return true;
                    }
                    
                    return false;
                }
            };
  • 相关阅读:
    数据库系统原理:范式理论
    数据库系统原理:MVCC
    数据库系统原理:悲观锁、乐观锁
    数据库系统原理:封锁
    数据库系统原理:四大隔离级别
    数据库系统原理:ACID的作用以及实现原理
    计算机网络HTTP:长连接与短连接
    计算机网络HTTP:HTTP缓存
    计算机网络HTTP:状态码
    yum安装Docker
  • 原文地址:https://www.cnblogs.com/qingmuchuanqi48/p/14170856.html
Copyright © 2011-2022 走看看