SpringCloud:Feign负载均衡

Feign自带负载均衡配置项 

 Feign通过接口的方法调用Rest服务(之前是Ribbon+RestTemplate),
该请求发送给Eureka服务器(http://MICROSERVICECLOUD-DEPT/dept/list),
通过Feign直接找到服务接口,由于在进行服务调用的时候融合了Ribbon技术,所以也支持负载均衡作用。
 SpringCloud:Feign负载均衡

 

参考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接口调用服务数据。