web-dev-qa-db-fra.com

com.netflix.discovery.shared.transport.TransportException: impossible d'exécuter la demande sur un serveur connu

Je suis très nouveau sur les microservices et essaie d'exécuter le code à partir du lien: https://dzone.com/articles/advanced-microservices-security-with-spring-and-oa . Lorsque je lance simplement le code, l'erreur suivante apparaît.

Quelle est la solution ?

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
    at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.Java:111) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.Java:134) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.Java:137) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.Java:77) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.Java:134) ~[eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.Java:1030) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.DiscoveryClient.fetchRegistry(DiscoveryClient.Java:944) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.DiscoveryClient.refreshRegistry(DiscoveryClient.Java:1468) [eureka-client-1.4.12.jar:1.4.12]
    at com.netflix.discovery.DiscoveryClient$CacheRefreshThread.run(DiscoveryClient.Java:1435) [eureka-client-1.4.12.jar:1.4.12]
    at Java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.8.0_144]
    at Java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_144]
    at Java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_144]
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_144]
    at Java.lang.Thread.run(Unknown Source) [na:1.8.0_144]

2017-09-09 18:53:11.909 ERROR 16268 --- [tbeatExecutor-0] c.n.d.s.t.d.RedirectingEurekaHttpClient  : Request execution error

Je n'ai rien installé de particulier sur le système. S'il vous plaît laissez-moi savoir ce que je dois installer?

enter image description here

18
user5778069

Je trouve que je dois ajouter ces deux applications à la application.properties, cela peut fonctionner. Seulement une ne suffit pas.

eureka.client.register-with-eureka=false

eureka.client.fetch-registry=false
31
xuezhongyu01

Ce message particulier est juste un avertissement. Votre application tente de s’inscrire auprès d’Eureka, mais Eureka ne répond pas. Vous pouvez soit démarrer une instance d'Eureka, soit désactiver l'enregistrement automatique en ajoutant ce qui suit à votre application.yml.

eureka:
  client:
    register-with-eureka: false
6
Faron

Vous devez créer Eureka Registry Server qui est un autre microservice. C'est la classe principale d'une application SpringBoot, elle devrait avoir l'annotation @EnableEurekaServer.

Ensuite, dans votre client Eureka, vous devrez mentionner l’URL du serveur de registre dans appliation.yml comme ci-dessous:

spring:
  application:
    name: stock-service

server:
  port: 8083


eureka:
  client:
    registerWithEureka: true
    fetchRegistry: true
    serviceUrl:
      defaultZone: http://localhost:8084/eureka/
  instance:
    hostname: localhost

où defaultzone doit contenir la valeur de votre registre Eureka.

Une fois toutes ces configurations effectuées, vous devez obtenir le microservice du registre Eureka, puis le client Eureka. Une fois votre registre créé, vous ne rencontrerez pas cette exception.

5
ashish kathait

Cela se produit car il essaie de se connecter à n’importe quel serveur connu. Par conséquent, pour mettre fin à cette erreur, un serveur connu est le serveur eureka situé sur le port 8761, qui est son port par défaut. Vous devrez donc mettre à jour le fichier application.properties avec

server.port=8761

Pour éviter que eureka ne s'enregistre elle-même, vous ajoutez ceci au fichier application.properties.

eureka.client.register-with-eureka=false

Assurez-vous qu'EurekaServer est activé. Par exemple, en utilisant Spring Boot, écrivez ce qui suit sur la classe principale.

@EnableEurekaServer

S'il vous plaît, pardonnez-moi de fournir une solution à l'aide d'un fichier .properties, mais c'est ce que je travaille avec, mais les configurations .yml ne devraient pas être trop différentes.

5
stanlee

Assurez-vous que votre client ruban est correct

package com.in28minutes.microservices.currencyconversionservice;

import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

@FeignClient(name="curreenter code herency-exchange-service")
@RibbonClient(name="currency-exchange-service") 
public interface CurrencyExchangeServiceProxy { 
    @GetMapping("/currency-exchange/from/{from}/to/{to}")
    public CurrencyConversionBean retrieveExchangeValue
        (@PathVariable("from") String from, @PathVariable("to") String to); //mention correct pathvariables
}
0
shubham kumar