SpringCloud极简入门(六)声明式REST客户端-Feign

作者:陈刚,叩丁狼高级讲师。原创文章,转载请注明出处。

一.什么是Feign

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果

二.使用Feign

1.在Consumer项目(端口为:3333)的基础上修改,添加Feigin依赖包

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

2.找到主程序类,打上@EnableFeignClients标签开启Feigin

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
public class Consumer1Application {

    public static void main(String[] args) {
        SpringApplication.run(Consumer1Application.class, args);
    }
}

3.定义Feigin接口
使用@FeignClient注解来声明Feign Client接口,该注解的value为需要远程调用的服务,而configuration指向负载均衡策略配置类
而该接口下的“provide”方法通过Feign来调用“PRODUCER”服务的“/provide”接口
```
//PRODUCER:指向要访问的服务
//configuration = FooConfiguration.class: Feign Client配置类,指定负载均衡策略
@FeignClient(value = “PRODUCER”,configuration = FooConfiguration.class)
public interface MyFeignClient {

//当此方法别调用会自动请求到 PRODUCER服务的 /provide 资源
@RequestMapping(value = "/provide")
public String provide(@RequestParam("name") String name);

}



@Configuration
public class FooConfiguration {
@Bean
public IRule ribbonRule() {
//RandomRule : 负载均衡规则:随机
return new RandomRule();
}
}


>4.ConsumerController增加方法feignTest,调用MyFeignClient的provide方法

@Autowired
private MyFeignClient myFeignClient;

@RequestMapping("/feign")
public String feignTest(@RequestParam("name") String name){
    return myFeignClient.provide(name);
}

```

5.测试:依次启动EurekaServer,Producer,Producer2,Consumer,访问http://localhost:3333/feign?name=zs 你将会看到:“zs:你好呀这里是Producer服务”和“zs:你好呀这里是另一个Producer服务”的随机出现。说明我们的负载均衡随机算法目的达到。

注意:我们的注册中心已经实现了高可用集群,启动EurekaServer服务的时候请使用 java -jar 的方式启动。



猜你喜欢

转载自blog.csdn.net/wolfcode_cn/article/details/80654461