SpringCloud:Feign负载均衡
Feign自带负载均衡配置项
Feign通过接口的方法调用Rest服务(之前是Ribbon+RestTemplate),
该请求发送给Eureka服务器(http://MICROSERVICECLOUD-DEPT/dept/list),
通过Feign直接找到服务接口,由于在进行服务调用的时候融合了Ribbon技术,所以也支持负载均衡作用。
参考microservicecloud-consumer-dept-80创建新建microservicecloud-consumer-dept-feign,修改主启动类DeptConsumer80_Feign_App
添加pom.xml对feign的配置
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
完整feign的pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>microservicecloud</artifactId>
<groupId>com.atguigu.springcloud</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>microservicecloud-consumer-dept-feign</artifactId>
<dependencies>
<dependency><!-- 自己定义的api -->
<groupId>com.atguigu.springcloud</groupId>
<artifactId>microservicecloud-api</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 修改后立即生效,热部署 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>springloaded</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- Ribbon相关 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--添加对feign的支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
</dependencies>
</project>
api中新建DeptClientService接口并新增注解@FeignClient,然后maven clean和maven install
package com.atguigu.springcloud.service;
import com.atguigu.springcloud.entities.Dept;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
/**
* Created by admin on 2019/1/30 11:36
*
* @Author: created by admin
* @Date: created in 11:36 2019/1/30
* @param: bindingResult
* @param: result
* @return:
* @throws:
* @Description:
* @version:
*/
@FeignClient(value = "microservicecloud-provider-dept")
public interface DeptClientService {
@RequestMapping(value="/dept/add",method=RequestMethod.POST)
public boolean add(Dept dept);
@RequestMapping(value="/dept/get/{id}",method=RequestMethod.GET)
public Dept get(Long id);
@RequestMapping(value="/dept/list",method=RequestMethod.GET)
public List<Dept> list();
}
在feign主启动类上面添加启动feign
@EnableFeignClients(basePackages= {"com.atguigu.springcloud"})//basePackages都是api的路径
@ComponentScan("com.atguigu.springcloud")//扫描的事api中的路径
测试的时候启动三个eureka集群,然后启动三个服务集群provicer,然后启动feign,通过feign接口调用服务数据。