Feign和Ribbon是类似的负载均衡工具。Fegin是声明式的web service客户端,它使得编写Web服务客户端变得更加简单。我们只需要通过创建接口并用注解来配置它既可完成对Web服务接口的绑定
Feign旨在让Java Http客户端变得更容易,同时Feign集成了Ribbon和Eureka来提供均衡负载的HTTP客户端实现
我们看看如何使用吧
创建新的子工程
首先创建和eureka-consumer一样的子工程,命名eureka-consumer-feign,然后进行些许修改
1.去掉自定义rule和主程序的@RibbonClient注解以及ServiceController类中的所有方法
2.添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
3.创建接口
创建service包,并创建接口
package com.ifilldream.leancloud.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
@Component
@FeignClient(value = "eureka-client")
public interface FeignService {
@GetMapping("/test")
String consumer();
}
注意:使用@FeignClient来指定服务名称,这里指定了eureka-client服务,@GetMapping("/test")中的/test绑定的就是eureka-client服务中的/test接口
4.修改ServiceController
@RestController
public class ServiceController {
@Autowired
private FeignService feignService;
@GetMapping("/consumer")
public String consumer() {
return feignService.consumer();
}
}
5.启动类
@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients()
public class ConsumerFeign {
public static void main(String[] args) {
SpringApplication.run(ConsumerFeign.class, args);
}
}
通过@EnableFeignClients()注解扫描开启Feign
6.测试
依次启动eureka-server7001、eureka-client8001、eureka-client8002、eureka-consumer-feign,浏览器输入http://localhost:6001/consumer 即可看到效果,此时默认为轮询
本文介绍了如何在SpringCloud中使用Feign结合Ribbon实现负载均衡。首先,删除了自定义规则和@RibbonClient注解,然后添加Feign相关依赖,创建Feign接口并指定服务名称。在ServiceController中进行相应修改,并在启动类中启用Feign客户端。最后,通过测试验证了负载均衡的效果。
1847

被折叠的 条评论
为什么被折叠?



