SpringCloud组件Feign的初级使用

一、首先,项目中需要引入Feign需要的jar包

 <!--  feigin http rpc -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

二、Feign对外的接口,也就是客户端

其中,configuration: Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract

contextId 是因为多个Feign的情况下,用来区分服务的,比如value一直,通过contextId区分
@FeignClient(value = "fang-order",contextId = "orderUser",path = "/orderFeign",configuration  = FeignExceptionConfig.class)
public interface OrderFeginClient {

    @PostMapping("/order/getOrderInfo")
    OrderUserDto getOrderInfo(@RequestBody OrderInfoParm parm);
}
  • 首先这是一个接口,Feign会通过动态代理,帮我们生成实现类。

  • @FeignClient,声明这是一个Feign客户端,通过value属性指定服务名称,path指定路径

  • •接口中的定义方法,完全采用SpringMVC的注解,Feign会根据注解帮我们生成URL,并访问获取结果

三、Feign接口的容错处理,在这个里面处理如果feign调用失败,需要返回的结果

@Component
@Slf4j
public class OrderFeginFallback implements OrderFeginClient{


    @Override
    public OrderUserDto getOrderInfo(OrderInfoParm parm) {
        OrderUserDto orderUserDto = new OrderUserDto();
        log.info("feign调用  order 出错了  返回 null   ");
        return orderUserDto;
    }
}

FeignClient注解的一些属性

四、调用Feign的接口入口

五、controller的调用

1、Feign报错:Consider defining a bean of type 'com.order.orderApiFeign' in your configuration.

这个是因为在启动类上面没有添加  @EnableFeignClients 注解导致的,加上这个注解就可以解决问题了。开启Feign功能

2、springcloud服务间的feign调用报错exception is feign.RetryableException: Read timed out executing POST http://。。。。

明显可以看到是http请求报错超时,feign的调用分两层,ribbon的调用和hystrix的调用,高版本的hystrix默认是关闭的,所以在bootstrap.yml配置文件中设置相关的配置即可

ribbon:
  ServerListRefreshInterval: 10  #刷新服务列表源的间隔时间
  OkToRetryOnAllOperations: true
  MaxAutoRetries: 1
  MaxAutoRetriesNextServer: 1
  ReadTimeout: 16000
  ConnectTimeout: 16000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值