feign ribbon 独立使用例子
所属分类 springcloud
浏览量 983
ribbon 客户端负载均衡
Feign 轻量级 RESTful 客户端
Feign makes writing java http clients easier
内置Ribbon 实现 客户端负载均衡
使用Feign的注解定义接口
OpenFeign 在Feign的基础上支持SpringMVC注解,如@RequesMapping等
@FeignClient可以解析SpringMVC的@RequestMapping 等注解
通过动态代理的方式产生实现类
feign ribbon 可以脱离 spring 独立使用
客户端负载均衡
ILoadBalancer balancer = new BaseLoadBalancer();
List servers = new ArrayList();
servers.add(new Server("localhost", 8080));
servers.add(new Server("localhost", 8081));
balancer.addServers(servers);
for(int i=0;i<10;i++){
Server choosedServer = balancer.chooseServer(null);
System.out.println(choosedServer);
}
服务列表可以在 注册中心 动态维护
private static interface InfoService{
@RequestLine("GET /info")
String info();
}
Properties properties = new Properties();
properties.put("demo.ribbon.MaxAutoRetries","1");
properties.put("demo.ribbon.OkToRetryOnAllOperations","true");
properties.put("demo.ribbon.ServerListRefreshInterval","2000");
properties.put("demo.ribbon.ConnectTimeout","2000");
properties.put("demo.ribbon.ReadTimeout","3000");
properties.put("demo.ribbon.listOfServers","localhost:8080,localhost:8090");
properties.put("demo.ribbon.EnablePrimeConnections","true");
// prefix demo ==> appName
// http://demo
ConfigurationManager.loadProperties(properties);
InfoService infoService = Feign.builder().client(RibbonClient.create())
//.encoder(new JacksonEncoder())
//.decoder(new JacksonDecoder())
.target(InfoService.class,"http://demo");
for(int i=0;i<10;i++) {
System.out.println(infoService.info());
}
服务端
https://gitee.com/dyyx/springboothello
mvn spring-boot:run -Dstart-class=demo.DemoApp -Dspring-boot.run.arguments=--server.port=8080
mvn spring-boot:run -Dstart-class=demo.DemoApp -Dspring-boot.run.arguments=--server.port=8090
pom依赖
com.netflix.ribbon:ribbon-loadbalancer:2.2.5
com.netflix.ribbon:ribbon-httpclient:2.2.5
com.netflix.archaius:archaius-core:0.7.6
io.github.openfeign:feign-core:9.5.1
io.github.openfeign:feign-ribbon:9.5.1
io.github.openfeign:feign-jackson:9.5.1
io.github.openfeign:feign-jackson:9.5.1
完整代码
https://gitee.com/dyyx/demos/tree/master/feign-riboon-demo
上一篇
下一篇
Hystrix实例
SpringMVC @ControllerAdvice 注解
springboot读取配置的几种方式
springcloud zuul 简介
SpringBoot注册Servlet的三种方式
springboot获取内置tomcat端口