web-dev-qa-db-ja.com

com.netflix.discovery.shared.transport.TransportException:既知のサーバーでリクエストを実行できません

私はマイクロサービスに非常に新しく、リンクからコードを実行しようとしています: https://dzone.com/articles/advanced-microservices-security-with-spring-and-oa 単純にコードを実行すると、次のエラーが表示されます。

問題は何ですか ?

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

システムに特別なものをインストールしていません。何をインストールする必要があるのか​​教えてください。

enter image description here

18
user5778069

これら2つのアプリケーションをapplication.propertiesに追加する必要がありますが、それは機能します。1つだけでは不十分です。

eureka.client.register-with-eureka=false

eureka.client.fetch-registry=false
31
xuezhongyu01

この特定のメッセージは単なる警告です。アプリケーションはユーレカに登録しようとしていますが、ユーレカは応答していません。 Eurekaのインスタンスを起動するか、application.ymlに以下を追加して自動登録を無効にすることができます。

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

別のマイクロサービスであるEureka Registry Serverを作成する必要があります。これは、SpringBootアプリケーションのメインクラスであり、@ EnableEurekaServerアノテーションが必要です。

次に、Eureka Clientで、以下のようにappliation.ymlでレジストリサーバーのURLを指定する必要があります。

spring:
  application:
    name: stock-service

server:
  port: 8083


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

defaultzoneは、Eurekaレジストリの値を保持する必要があります。

これらのすべての構成を行ったら、Eureka Registryマイクロサービスを起動する必要があり、Eurekaクライアントを起動できます。レジストリが稼働すると、この例外に直面することはありません。

5
ashish kathait

これは、既知のサーバーに接続しようとしているために発生しています。そのエラーを停止するには、既知のサーバーがデフォルトのポートであるポート8761のeurekaサーバーであり、次のようにapplication.propertiesを更新する必要があります

server.port=8761

Eurekaが自分自身を登録しないようにするには、これをapplication.propertiesに追加します

eureka.client.register-with-eureka=false

EurekaServerが有効になっていることを確認します。たとえば、スプリングブートを使用して、メインクラスに以下を記述します。

@EnableEurekaServer

.propertiesファイルを使用してソリューションを提供してください.

5
stanlee

リボンクライアントが正しいことを確認してください

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