栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springcloud feign动态url调用接口,动态配置超时时间和重试次数,动态配置请求头类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springcloud feign动态url调用接口,动态配置超时时间和重试次数,动态配置请求头类型

package com.lf.utils.commonality.http;

import com.alibaba.fastjson.JSONObject;
import feign.Feign;
import feign.Request;
import feign.Retryer;
import feign.Target;
import feign.codec.Decoder;
import feign.codec.Encoder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;


@Component
@Slf4j
public class HttpUtils {
    @Value("${feignOptions.connectTimeout}")
    private Long connectTimeout;

    @Value("${feignOptions.readTimeout}")
    private Long readTimeout;

    @Value("${feignRetryer.period}")
    private Long period;

    @Value("${feignRetryer.maxPeriod}")
    private Long maxPeriod;

    @Value("${feignRetryer.maxAttempts}")
    private Integer maxAttempts;

    
    private String http(String url,String contentType,String params){
        //超时时间和重试直接的关系N=maxAttempts(次数)O=options, R=retryer  超时时间=N(O+R)-R
        DynamicFeign target = Feign.builder().encoder(new Encoder.Default())
                .decoder(new Decoder.Default())
                .options(new Request.Options(connectTimeout,
                        TimeUnit.MILLISECONDS,readTimeout,
                        TimeUnit.MILLISECONDS,true))
                .retryer(new Retryer.Default(period,maxPeriod,maxAttempts))
                .target(DynamicFeign.class,url);
        String result = target.reqMethod(contentType,params);
         return result;
    }
@RestController
public class FeignApi {

    @Autowired
    private HttpUtils httpUtils;
    
    @Override
    @PostMapping("/getTest")
    @ApiOperation(value = "测试动态url地址请求")
    public String getWard()  {
        httpUtils.http("http://ip:8882/test",""application/json",JSONObject.toJSonString(args));
        return "成功";
    }
}
@FeignClient(name = "dynamicFeign",fallback = DynamicFeignFallBack.class)
public interface DynamicFeign {

    
    @RequestLine("POST ")
    @Headers("Content-Type: {contentType}")
    @Body("{body}")
    String reqMethod(@Param("contentType") String contentType,@Param("body") String body);

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760798.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号