Spring Cloud 四:服务消费(Feign)【Dalston版】

Spring Cloud Feign

Spring Cloud Feign是一套基于Netflix Feign实现的声明式服务调用客户端

一、根据eureka-consumer复制一个服务消费者工程,命名为:eureka-consumer-feign。在pom.xml中增加下面的依赖:

<dependencies>
    ...
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
    </dependency>
</dependencies>

二、修改应用主类。通过@EnableFeignClients注解开启扫描Spring Cloud Feign客户端的功能:

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class).web(true).run(args);
    }
}

三、创建一个Feign的客户端接口定义。

使用@FeignClient注解来指定这个接口所要调用的服务名称,接口中定义的各个函数使用Spring MVC的注解就可以来绑定服务提供方的REST接口,

比如下面就是绑定eureka-client服务的/dc接口的例子:

@FeignClient("eureka-client")
public interface DcClient {

    @GetMapping("/dc")
    String consumer();

}
@FeignClient("eureka-client") 指定我们要调用服务名称,
("/dc") 绑定服务提供方的接口名

四、修改 Controller。通过定义的feign客户端来调用服务提供方的接口

@RestController
public class DcController {

    @Autowired
    DcClient dcClient;

    @GetMapping("/consumer")
    public String dc() {
        return dcClient.consumer();
    }

}

通过Spring Cloud Feign来实现服务调用的方式更加简单了,通过@FeignClient定义的接口来统一的声明我们需要依赖的微服务接口。

而在具体使用的时候就跟调用本地方法一点的进行调用即可。由于Feign是基于Ribbon实现的,所以它自带了客户端负载均衡功能

 
原文地址:https://www.cnblogs.com/lyon91/p/8778865.html