一 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: 8080eureka: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 {@Autowiredprivate 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