从0到1搭建spring cloud alibaba 微服务 OpenFeign(1)

1.Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。使用方法是定义一个服务接口然后在上面添加注解。在实际开发中,由于服务依赖的调用不可能一处使用,往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。

2.用我们以前的cloudalibaba-consumer-nacos-order83工程演示作为客户端

3.pom文件引入openfeign

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

4.主启动类:

@SpringBootApplication
//@EnableDiscoveryClient
@EnableFeignClients //开启Feign
public class OrderApplication83 {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication83.class,args);
    }
}

5.编写对外暴漏借口共调用

6.用我们之前9001和9002为服务提供者,分别启动这三个服务,并访问地址:http://127.0.0.1:83/consumer/payment/nacos/1

再次刷新界面

结果证明Openfeign内部支持负载调用。

 

                                        Openfeign超时控制

1.在端口9001服务中设置超时

2.在83端口服务中进行调用上面添加的接口,并访问:http://127.0.0.1:83/consumer/payment/feign/timeout

因为feign默认客户端只等待一秒,但服务端处理需要超过一秒,所以就会出现上面的这个错误。

解决办法:

在yml文件添加如下配置:

#设置feign 客户端超时时间(openFeign默认支持ribbon)
ribbon:
  #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
  ReadTimeout: 5000
  #指的是建立连接后从服务器读取到可用资源所用的时间
  ConnectTimeout: 5000

 

                                    Openfeign日志增强

在yml配置文件添加如下配置:

logging:
  level:
    #feign日志以什么级别监控哪个接口
    com.yxw.springcloud.service.PaymentFeignService: debug

在配置日志bean

@Configuration
public class FeignConfig {
    @Bean
    Logger.Level feignLoggerLevel(){
        return Logger.Level.FULL;
    }
}

启动服务访问接口看控制台打印如下信息:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章