1、啟動【服務中心】集群,即 Eureka Server
2、啟動【服務提供者】集群,即 Eureka Client
3、創建【服務消費者】,即 Eureka Discovery Client
3.1、新建 Spring Boot 工程,工程名稱 springcloud-eureka-feign
3.2、工程pom.xml文件添加如下依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
3.3、在工程啟動類中,添加注解 @EnableDiscoveryClient,@EnableFeignClients
package com.miniooc.eurekafeign;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
/**
* EurekaFeignApplication
* 應用程序啟動類,程序入口
*
* @author 宋陸
* @version 1.0.0
*/
@EnableDiscoveryClient // 啟用 Eureka 服務發現
@EnableFeignClients // 啟用 Feign
@SpringBootApplication
public class EurekaFeignApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaFeignApplication.class, args);
}
}
3.4、創建【服務消費者】服務類 EurekaFeignService
package com.miniooc.eurekafeign.service;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* EurekaFeignService
* 服務消費者,調用服務提供者提供的服務,實現業務
*
* @author 宋陸
* @version 1.0.0
*/
@FeignClient(value = "eureka-client") // 調用的服務的名稱
public interface EurekaFeignService {
@RequestMapping(value = "/info")
String getInfo();
}
3.5、創建【服務消費者】控制器類 EurekaFeignController
package com.miniooc.eurekafeign.controller;
import com.miniooc.eurekafeign.service.EurekaFeignService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* EurekaFeignController
* 服務消費控制器類,對用戶提供服務
*
* @author 宋陸
* @version 1.0.0
*/
@RestController
public class EurekaFeignController {
@Resource
private EurekaFeignService eurekaFeignService;
@RequestMapping("/feignInfo")
public String feignInfo() {
String message = eurekaFeignService.getInfo();
return "獲取到的信息:" + message;
}
}
3.6、創建工程配置文件application.yml,添加如下配置:
server:
port: 52620
spring:
application:
name: eureka-discovery-feign
eureka:
instance:
hostname: localhost
# 表示eureka client間隔多久去拉取服務注冊信息,默認為30秒,如果要迅速獲取服務注冊狀態,可以縮小該值
lease-renewal-interval-in-seconds: 5
# 表示eureka server至上一次收到client的心跳之后,等待下一次心跳的超時時間,在這個時間內若沒收到下一次心跳,則將移除該instance。
# 默認為90秒
# 如果該值太大,則很可能將流量轉發過去的時候,該instance已經不存活了。
# 如果該值設置太小了,則instance則很可能因為臨時的網絡抖動而被摘除掉。
# 該值至少應該大於 leaseRenewalIntervalInSeconds
lease-expiration-duration-in-seconds: 10
client:
serviceUrl:
defaultZone: http://localhost:9527/eureka/,http://localhost:9528/eureka/,http://localhost:9529/eureka/
3.7、啟動【服務消費者】工程
3.8、打開瀏覽器,訪問【服務中心】前台界面 http://localhost:9527,http://localhost:9528,http://localhost:9529

紅框處,可以看到服務消費實例已經注冊到了服務注冊中心,服務名 EUREKA-DISCOVERY-FEIGN
3.9、開瀏覽器窗口,訪問 http://localhost:52620/feignInfo,多次刷新該地址



紅框處,可以看到【服務消費者】成功調用了【服務提供者】提供的服務,並實現了負載均衡,輪詢請求不同的【服務提供者】。
至此,一個簡單的單點【服務消費者】搭建完成。
