一 openfeign简介
Feign 是声明性(注解)web 服务客户端它使编写 web 服务客户端更加容易请创建一个接口并对其进行注解.它具有可插入注解支持,包括Feign注解和JAXRS注解Feign 还支持可插拔编码器和解码器。Spring cloud 添加了对Spring MVC注解的支持,并支持使用 HttpMessageConverters,Spring Web 中默认使用的注解。Spring cloud集成了Ribbon和Eureka以及 Spring cloud LoadBalancer,以在使用 Feign 时提供负载平衡的 http 客户端。
二、使用
1.分别建立提供者和消费者两个服务模块,模拟消费者调用提供者服务的场景
2.配置文件如下:
server:
port: 8080
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
spring:
application:
name: provider-service
server:
port: 8081
spring:
application:
name: consumer-service
eureka:
client:
service-url:
defaultZone: http://localhost:8761/eureka
ribbon:
ReadTimeout: 3000 #调用超时时间
ConnectTimeout: 3000 #连接超时时间
3.provider模块:
需要注意的是,如果要实现带参传入,则传参注解不能省略。
@RestController
public class ProviderController {
@GetMapping("/provider")
public String providerService(){
return "啤酒饮料矿泉水,瓜子花生八宝粥";
}
}
4.consumer模块:
@RestController
public class ConsumerController {
@Autowired
private consumerProviderFeign consumerProviderFeign;
@GetMapping("/consumer")
public String consumerService(){
System.out.println("您有新的客户订单");
String s = consumerProviderFeign.providerService();
return s;
}
}
5.写openfeign接口:
另外,还应在启动类加上注解@EnableFeignClients
@FeignClient(value = "provider-service")
public interface consumerProviderFeign {
@GetMapping("/provider")
public String providerService();
}
结果:
6.原理:
feign->ribbon->eureka