一: 编写Eureka Feign Client:

    1.在POM文件中引入依赖:
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-openfeign</artifactId>
                </dependency>

                <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
                </dependency>

                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-web</artifactId>
                </dependency>

                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-test</artifactId>
                    <scope>test</scope>
                </dependency>

                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-actuator</artifactId>
                </dependency>

    2. 配置application.yml
        spring:
          application:
            name: eureka-feign-client
        server:
          port: 8765

        eureka:
          client:
            serviceUrl:
              defaultZone: http://localhost:8761/eureka/

    3. 在EurekaFeignClientApplication上增加@EnableEurekaClient开启 Eureka Client的功能,增加@EnableFeignClients开启FeignClient功能。

    4. 新建一个FeignConfig类
        在FeignConfig 类加上@Configuration 注解,表明该类是一个配置类,并注入一个BeanName为feignRetryer 的Retryer的Bean 。
        注入该Bean 之后, Feign 在远程调用失败后会进行重试。

    5. 新建一个EurekaClientFeign接口
            在接口上加@FeignClient 注解来声明一个Feign Client,其中value 为远程调用其他服务的服务名, FeignConfig.class 为Feign Client 的配置类。
            在EurekaClientFeign 接口内部有一个sayHiFromClientEureka()方法,该方法通过Feign 来调用eureka-client 服务的“/hi”的API 接口

    6. 新建一个HiService类
        Hi Service 类注入EurekaClientFeign 的Bean ,通过EurekaClientF eign 去调用sayHiFromClientEureka()方法。

    7. 新建一个HiController类
        在Hi Controller 上加上@RestController 注解,开启RestController 的功能,写一个API 接口“/hi”,
        在该接口调用了Hi Service 的sayHi ()方法。HiService 通过EurekaClientFeign 远程调用eureka-cl ient 服务的API 接口"/hi"

    8.  启动eureka-server功能,端口为8761。启动两个eureka-client示例,端口分别为8762,8763。
        (如果已经启动,请忽略。9. 启动eureka-feign-client服务后,在浏览器上访问http://localhost:8765/hi
        浏览器会 轮流 显示如下内容:
            hi forezp,i am from port : 8763
            hi forezp , i am from port : 8762

        由此可见, Feign Client 远程调用了eureka-client 服务(存在端口为8762 和8763 的两个实例)的“/hi” API 接口, Feign Client 有负载均衡的能力。
        查看起步依赖spring-cloud-starter-openfeign的pom 文件,可以看到该起步依赖默认引入了Ribbon 和Hystrix 的依赖,即负载均衡和熔断器的依赖。

    注意:feign默认是HttpURLConnection进行http请求发送。 如果要使用apache httpclient请参考 eurka-feign-httpclient module。