Search code examples
spring-bootspring-cloudspring-cloud-netflix

Micro service(eureka client) is not registering with eureka server / eureka server is not discovering the eureka client


eureka server set up

pom.xml

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
</dependencies>
<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>

main application class

@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServerApplication {

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

application.properties

server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

eureka client set up

pom.xml

<properties>
    <java.version>1.8</java.version>
    <spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-netflix-eureka-client</artifactId>
</dependency>
<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>

main application class

@SpringBootApplication
@EnableEurekaClient
public class CurrencyExchangeServiceApplication {

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

application.properties

server.port=8100
spring.application.name=currency-exchange-service

eureka.client.register-with-eureka=true
eureka.client.fetch-registry=true
eureka.client.serviceUrl.defaultZone=http://localhost:8761

I dont see the micro-service - currency-exchange-service registered with Eureka server in the eureka-server dashboard(http://localhost:8761)

  1. Why is the eureka client not getting registered with eureka server?
  2. Is @EnableDiscoveryClient same as @EnableEurekaClient ?

Solution

  • I have created and tested with your config. The below two lines not required in discovery(eureka) client application.

    eureka.client.register-with-eureka=true
    eureka.client.fetch-registry=true
    

    Please use the following dependency

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    

    instead of

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-netflix-eureka-client</artifactId>
    </dependency>
    

    Actually register-with-eureka : false is stopping from registering with discovery(eureka) server, so remove it completely from client application.

    Add the below line if the discovery(eureka) server port is other than 8761. For ex.,

    eureka.client.serviceUrl.defaultZone=http://localhost:9000