Feign
Feign是基于ribbon开发完成的,它其实就是对ribbon一个封装
2.1 开发步骤
1、在消费方添加open-feign的座标
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2、在消费定义feign的接口
@FeignClient(name="eureka-provider")
public interface GoodsFeignClient {
@GetMapping("/goods/findOne/{id}")
public Goods findOne(@PathVariable("id") int id);
}
接口中的方法签名要和提供方中的控制器的方法签名一致,并且在接口上添加@FeignClient注解
3、使用feign远程调用
@Autowired
private GoodsFeignClient goodsFeignClient;
@GetMapping("/goods/{id}")
public Goods findGoodsById(@PathVariable("id") int id){
Goods goods = goodsFeignClient.findOne(id);
return goods;
}
4、在启动类上添加@EnableFeignClients注解
@SpringBootApplication
@EnableFeignClients
@EnableEurekaClient
public class ConsumerApp {
public static void main(String[] args) {
SpringApplication.run(ConsumerApp.class,args);
}
}
2.2 Feign的其它设置
由于feign是基于ribbon发起远程调用的,所以feign支持ribbon的所有功能。我们在配置时也只用配置ribbon就行.
2.2.1 超时设置
#全局,所有feign远程调用都3秒超时
ribbon:
ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)
ReadTimeout: 3000 #服务请求处理超时时间(毫秒)
#只对user-server微服务发起feign远程调用都3秒超时
user-service:
ribbon:
ConnectTimeout: 1000 #服务请求连接超时时间(毫秒)
ReadTimeout: 3000 #服务请求处理超时时间(毫秒)
2.2.2 日志记录
1、配置日志记录的级别
logging:
level:
com.itheima: debug
2、开发一个配置类
@Configuration
public class FeignConfig {
@Bean
public Logger.Level level(){
return Logger.Level.FULL;
}
}
3、应用
@FeignClient(name="eureka-provider",configuration = FeignConfig.class)
public interface GoodsFeignClient {
@GetMapping("/goods/findOne/{id}")
public Goods findOne(@PathVariable("id") int id);
}