Eureka在Server端的搭建已經有很多介紹的文章,同時也是學習Eureka的第一步。
搭建好注冊中心后怎么進行服務注冊和服務調用,是我們要講的主要內容。
開發環境:IDEA2018.3+SpringBoot2.1.7Release+Eureka2.1.3+SpringCloud Greenwich.SR3
第一步:
Pom引入Eureka包
<!--eureka--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
同時需要引入 spring-cloud-dependencies,來管理SpringCloud全家桶組件
<dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
關鍵點在於spring-cloud引用的版本,需要查一下自己springboot版本選擇對應的spring-cloud.version
SpringCloud | SpringBoot |
Angel版本 | 兼容Spring Boot 1.2.x |
Brixton版本 | 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x |
Camden版本 | 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x |
Dalston版本、Edgware版本 | 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x |
Finchley版本 | 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x |
Greenwich版本 | 兼容Spring Boot 2.1.x |
當然對於不熟悉的同學來說,看完這個依舊不知道自己該如何正確選擇小版本。
這一交給大家一個最容易的方法
打開 Spring Initializr選擇自己的Spring版本
在Dependencies部分輸入Eureka,找到Eureka Discovery Client,這里會根據我們選擇的組件生成項目模板。
然后下載為我們創建的項目模板,找到POM.XML查看這里的引用版本,是不是又快捷,又准確。
我這里當然用到的版本是:
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
第二步:
添加yml配置Eureka
spring:
application:
name: crmapi
#eureka配置 eureka: client: fetch-registry: true register-with-eureka: true serviceUrl: defaultZone: http://127.0.0.11:8020/eureka/,http://127.0.0.1:8021/eureka/,http://127.0.0.1:8022/eureka/ instance: instance-id: ${spring.application.name} prefer-ip-address: true ip-address: 127.0.01
eureka.client.serviceUrl.defaultZone配置注冊中心地址
ureka.client.fetch-registry,是否啟用獲取服務注冊信息,默認true
ureka.client.fetch-registry.register-with-eureka,是否注冊eureka,默認true
instance.prefer-ip-address=true
默認false服務的Status將會采用“主機名:程序名(application.name屬性):端口號”
修改為true后,可以通過配置instance-id,來限定服務Status為制定instance-id,則實際訪問時會訪問對應的接口“服務器IP:端口號”
以上兩種方法可以按實際需求去配置。
第三步
注冊服務
找到程序入口添加@EnableEurekaClient注解
@EnableEurekaClient @EnableSwagger2 @SpringBootApplication @MapperScan public class xxxapiApplication { public static void main(String[] args) { SpringApplication.run(xxxapiApplication.class, args); }
在程序運行時便會按照之前的配置將當前服務注冊到注冊中心
到這里,就可以完成服務中心注冊,后面兩步是調用時用使用,當然調用前也是同樣要引用Eureka包,按第一步操作即可。
如果當前服務既是服務提供者又是服務調用者,就可以直接配置第四、第五步進行遠程調用別的服務。
第四步
配置調用
我們可以建一個Bean配置EurekaConfig.class
@Configuration public class EurekaConfig { @LoadBalanced @Bean RestTemplate restTemplate() { return new RestTemplate(); } }
第五步
Controller調用
@Autowired private RestTemplate restTemplate; public List<MemberLevelVO> GetMemberLevel(String im) { String im = restTemplate.getForObject("http://servername/getmemberlevel?im="+im,String.class) }
后傳:
調用時注意的問題,如果直接 new RestTemplate()去調用,服務端執行是不會調用我們前面調用的額IP形式,依然會調用主機名:端口號,是因為再資源注入是一定要有@LoadBalanced注解出現才行
如果需要手動刪除Eureka服務,可以使用PostMan執行DELETE操作既可刪除已有服務
刪除鏈接:http://127.0.0.1:8020/eureka/apps/crmapi(服務名Application)/bi:crmapi:8028(注冊名)
刪除操作