Eureka服務注冊於發現之Client搭建


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(注冊名)

 

刪除操作

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM