1. 程式人生 > >springcloud之eureka服務註冊

springcloud之eureka服務註冊

1.準備

為方便測試,建了多專案工程,方便開發,目錄結構如下

springcloud-demo
    api             # 公共模組
    eureka-7001     # eureka註冊中心
    provider-8001   # 服務提供者provider
    consumer-9001   # 服務消費者consumer

2.springcloud-demo引入依賴

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Dalston.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>1.5.9.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

注:主要就是Springboot(1.5.9.RELEASE)和Springcloud(Dalston.SR1) 如果版本不相容可能會出現錯誤

3.api

沒什麼可說的 就是一些公共的類 後面會對他改造 所以取名是api 不是common

4.eureka-7001

# 依賴引入
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>

# EurekaApplication新增@EnableEurekaServer,開啟服務中心

# application.yml配置
server:
  port: 7001
eureka:
  instance:
    # eureka服務端的例項名稱
    hostname: localhost
  client:
    # false表示不向註冊中心註冊自己
    register-with-eureka: false
    # false表示自己端就是註冊中心,我的職責就是維護服務例項,並不需要去檢索服務
    fetch-registry: false
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

注:啟動後可以直接訪問註冊中心

5.provider-8001

# 依賴引入
<!-- actuator監控資訊完善 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- 將微服務provider側註冊進eureka -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

# ProviderApplication新增@EnableEurekaClient,服務提供者也就是要到註冊中心 註冊自己的服務

# application.yml配置
server:
  port: 8001 
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka
  instance:
    instance-id: provider-8001
    # 訪問路徑可以顯示IP地址
    prefer-ip-address: true
info:
  app.name: provider-8001
  company.name: www.boomsecret.com
  build.artifactId: $project.artifactId$
  build.version: $project.version$
  
注:$xx$ 是自定義符號
  <resources>
      <resource>
          <directory>src/main/resources</directory>
          <filtering>true</filtering>
      </resource>
  </resources>
  <plugins>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
          <configuration>
              <delimiters>
                  <delimiter>$</delimiter>
              </delimiters>
          </configuration>
      </plugin>
  </plugins>

6.consumer-9001

# 依賴引入
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

# RestTemplate配置 可以呼叫provider服務
@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(5000);
        factory.setConnectTimeout(15000);
        return factory;
    }
}

7.總結

其實這個例子就是簡單的eureka註冊中心搭建 和服務提供者的簡單實現 接下來會更深入的講解

原始碼:https://gitee.com/jsjack_wang/springcloud-demo master分支