美文网首页
Feign服务消费

Feign服务消费

作者: 白驹过隙_忽然而已 | 来源:发表于2019-04-26 17:21 被阅读0次

    feign整合了ribbon,具备负载均衡的能力。

    一. 新建feign服务

    <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    

    在配置类上加上注解
    @EnableEurekaClient注解将服务注册到eureka server
    @EnableFeignClients注解开启OpenFeign功能

    @SpringBootApplication
    @EnableEurekaClient
    @EnableFeignClients /* 开启fegin功能 */
    public class FegindemoApplication {
        public static void main(String[] args) {
            SpringApplication.run(FegindemoApplication.class, args);
        }
    }
    

    2. 创建feign请求接口

    //feign 整合了ribbon,具备负载均衡的功能
    //这是一个feign客户端,调用name服务名的服务,轮询访问可用的服务器
    @FeignClient(name = "hello-service-1")
    public interface HelloServiceFegin {
    //不支持@GetMapping()注解,使用requestMapping中的value属性去匹配方法,
    //与本方法名无关,但是参数列表必须相同
    //结合起来这一段表示调用 hello-service-1服务的/index接口  
     @RequestMapping(value = "/index",method = RequestMethod.GET)
        String fasfsaf();
    }
    

    贴一下hello-service-1服务的index方法

    public class TestController {
        @Value(value = "${server.port}")
        private Integer port;
    
        @GetMapping("/index")
        public String index(){
            return "client_1" + this.port;
        }
    }
    

    主要是显示当前服务的启动端口,直观feign的轮询访问

    为了方便测试,创建一个Controller,调用该接口

    @RestController
    public class TestController {
    
        @Autowired
        HelloServiceFegin helloServiceFegin;
    
        @GetMapping("/test")
        public String test(){
            return helloServiceFegin.fasfsaf();
        }
    }
    

    测试

    启动各服务:
    (1) eureka注册中心
    (2) hello-service-1 服务,启动了两个服务实例,port:20000 port:20002
    (3) 上文创建的feign实例,启动端口10002
    重复请求 http://localhost:10002/test,返回如下

    image.png
    image.png

    轮询访问20000 20002 端口。

    Hystrix 简单使用

    fegin是自带断路器的,默认关闭,在配置中打开

    feign.hystric.enabled=true
    

    之要在@FeignClient中加上属性
    @FeignClient(valur="hello-servcie-1",fallback = HelloServiceFeginFallbackImpl.class)

    //feign 整合了ribbon,具备负载均衡的功能
    //这是一个feign客户端,调用name服务名的服务,轮询访问可用的服务器
    @FeignClient(name = "HELLO-SERVICE-1",fallback = HelloServiceFeginFallbackImpl.class)
    @Component(value = "helloServiceFegin")
    public interface HelloServiceFegin {
        //不支持@GetMapping()注解,使用requestMapping中的value属性去匹配方法
        //与本方法名无关,但是参数列表必须相同
        @RequestMapping(value = "/index",method = RequestMethod.GET)
        String fasfsaf();
    }
    
    @Component
    public class HelloServiceFeginFallbackImpl implements HelloServiceFegin {
        @Override
        public String fasfsaf() {
            return "sorry,the target server is not available";
        }
    }
    

    当停掉hello-service-1时,发起请求:


    image.png

    相关文章

      网友评论

          本文标题:Feign服务消费

          本文链接:https://www.haomeiwen.com/subject/cdzfnqtx.html