Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Eureka não registrou gateway

Estou com o servidor Eureka usando gradle, onde o build.gradle é:

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.4.1'
    id 'io.spring.dependency-management' version '1.1.7'
}

group = 'br.com.lsim'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

repositories {
    mavenCentral()
}

ext {
    set('springCloudVersion', "2024.0.0")
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

Já o application.properties é dado por:

server.port=8761
spring.application.name=server
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka

ja tenho 2 serviços registrados nele:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Onde o serviço de pagamentos é usando gradle e o pedidos usando maven.

Contudo, ao criar o gateway, usando tbm o gradle, não consegui conectar o eureka-client com o eureka-server.

O gradle do gateway é dado por:

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.4.1'
    id 'io.spring.dependency-management' version '1.1.7'
}

group = 'br.com.lsim'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

ext {
    set('springCloudVersion', "2024.0.0")
}

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway-mvc'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    developmentOnly 'org.springframework.boot:spring-boot-devtools'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

Já o application.properties é:

spring.application.name=gateway

server.port=8762
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka

spring.cloud.gateway.discovery.locator.enabled=true
spring.cloud.gateway.discovery.locator.lowerCaseServiceId=true

Onde eu tive o erro:

2025-01-14T09:32:52.964-03:00  INFO 39329 --- [gateway] [           main] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_GATEWAY/192.168.0.4:gateway:8762 - was unable to refresh its cache! This periodic background refresh will be retried in 30 seconds. status = Cannot execute request on any known server stacktrace = com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
2 respostas

Olá, Wellyson! Tudo bem?

Parece que o gateway não está conseguindo se registrar no Eureka Server. Vamos verificar alguns pontos que podem estar causando esse problema:

  1. Verifique a Conexão com o Eureka Server:

    • Certifique-se de que o Eureka Server está rodando corretamente na porta 8761.
    • Tente acessar http://localhost:8761/eureka no navegador para garantir que o Eureka Server está acessível.
  2. Verifique as Configurações do application.properties do Gateway:

    • As configurações parecem corretas, mas certifique-se de que não há erros de digitação. Especialmente, verifique se eureka.client.serviceUrl.defaultZone está apontando para http://localhost:8761/eureka.
  3. Verifique as Dependências:

    • Certifique-se de que as dependências do Eureka Client estão corretamente configuradas no build.gradle do gateway. Parece que você já incluiu org.springframework.cloud:spring-cloud-starter-netflix-eureka-client, o que está correto.

Tente essas sugestões e veja se alguma delas resolve o problema. Caso não resolva, peço que compartilhe todo o seu projeto para que eu possa fazer testes.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.
solução!

Na verdade o problema não está necessariamente no server, pois já estava com outros 2 serviços cadastrados lá, era especificamente esse. O servidor está sim rodando na porta 8761 e o eureka.client.serviceUrl.defaultZone está apontando para http://localhost:8761/eureka .

buscando aqui no fórum, vi alguém com o problema parecido, onde ele usava Maven, e ele passou algumas dependências em versões diferentes e uma dependênica diferente tbm, segui e deu certo está o pom.xml que funcinou no meu caso.

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>br.com.lsim</groupId>
    <artifactId>gateway</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>gateway</name>
    <description>Gateway</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>17</java.version>
        <spring-cloud.version>2023.0.0</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.projectreactor</groupId>
            <artifactId>reactor-test</artifactId>
            <scope>test</scope>
        </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>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>