IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    spring-cloud eureka server 的发现客户端与注册例子

    asuncool@gmail.com(yihaomen)发表于 2017-05-23 21:13:02
    love 0
    今天在公司测试Eureka server 与client 的发现与注册,可能是碰见鬼了,或者下载了假的jar包,配置都是按照网上文档做的,server 与客户端都跑起来了,但在eureka server 中就是查看不到已经运行起来的服务端。 最关键的是,在客户端也是配置了eureka.client.serviceUrl.defaultZone 地址,也加入相应的依赖包,而且也加入了@@EnableDiscoveryClient, 但无论如何还是发现不了客户端,后来就算了,晚上回到家,按照同样的方法,唯一不同的是换了 依赖的版本,就实现了。可以发现服务了。简单记录下配置过程。


    spring-cloud eureka  服务端实现。其实最关键的就是pom文件配对,依赖配好,然后加上注解@EnableEurekaServer就可以了。
    程序代码 程序代码

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.yihaomen</groupId>
      <artifactId>springcloud-001-eurekaserver</artifactId>
      <packaging>jar</packaging>
      <version>0.0.1-SNAPSHOT</version>
      <name>springcloud-001-eurekaserver Maven Webapp</name>
      <url>http://maven.apache.org</url>
      
      <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <java.version>1.8</java.version>
        </properties>
        
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.2.RELEASE</version>
        </parent>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Dalston.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
        </dependencies>
      
        <build>
            <finalName>springcloud-001-eurekaserver</finalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>



    主程序启动代码:
    程序代码 程序代码

    package com.yihaomen.eurekaserver;

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

    @SpringBootApplication
    @EnableEurekaServer
    public class ApplicationEurekaServer {
        
        public static void main(String[] args) {
            SpringApplication.run(ApplicationEurekaServer.class, args);
        }

    }


    spring-cloud eureka 客户端实现,这里用了我原来用spring-boot 的一个例子,可以参考这里:Spring-boot 与Mybatis集成, 附源码下载 , 在这个例子的基础上实现eureka client. 最主要的变化有如下几点:
    1. 加入eureka 相关的jar依赖,修改配置pom.xml文件
    2. 增加相关的配置文件, 可以是properties文件或者yml 文件
    3. 在主程序上加上注解@EnableDiscoveryClient 或者@EnableEurekaClient

    对于第1点,主要是需要与服务端的版本保持一致。另外加入eureka相关配置。主要变化如下:
    程序代码 程序代码

    增加
    <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Dalston.RELEASE</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    dependencies 中增加:
    <!-- eureka client add -->
         <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
         <!-- eureka client end -->


    对于第2点配置文件的更改,主要增加了一个配置文件bootstrap.yml,采用yml格式:
    程序代码 程序代码

    spring:
      application:
        name: microservice-user
    server:
      port: 8888
    eureka:
      client:
        healthcheck:
          enabled: true
        serviceUrl:
          defaultZone: http://localhost:8761/eureka
      instance:
        prefer-ip-address: false


    对于第3点,就更简单了
    程序代码 程序代码

    @SpringBootApplication
    @EnableDiscoveryClient
    @MapperScan("com.yihaomen.*")
    public class Application {

        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }


    基本是与公司相同的配置,但在家里就可以成功,在公司死活没有成功,我也服气了,唯一不同的是,公司不能上网,只有 1.4.1 版本,我在家用的是 1.5.2版本。

    提供测试代码下载:
    下载文件 spring-cloud-eureka demo

    下载文件 spring-cloud-eureka-client demo


沪ICP备19023445号-2号
友情链接