私はマイクロサービスに非常に新しく、リンクからコードを実行しようとしています: 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
システムに特別なものをインストールしていません。何をインストールする必要があるのか教えてください。
これら2つのアプリケーションをapplication.propertiesに追加する必要がありますが、それは機能します。1つだけでは不十分です。
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
この特定のメッセージは単なる警告です。アプリケーションはユーレカに登録しようとしていますが、ユーレカは応答していません。 Eurekaのインスタンスを起動するか、application.ymlに以下を追加して自動登録を無効にすることができます。
eureka:
client:
register-with-eureka: false
別のマイクロサービスである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クライアントを起動できます。レジストリが稼働すると、この例外に直面することはありません。
これは、既知のサーバーに接続しようとしているために発生しています。そのエラーを停止するには、既知のサーバーがデフォルトのポートであるポート8761のeurekaサーバーであり、次のようにapplication.propertiesを更新する必要があります
server.port=8761
Eurekaが自分自身を登録しないようにするには、これをapplication.propertiesに追加します
eureka.client.register-with-eureka=false
EurekaServerが有効になっていることを確認します。たとえば、スプリングブートを使用して、メインクラスに以下を記述します。
@EnableEurekaServer
.propertiesファイルを使用してソリューションを提供してください.
リボンクライアントが正しいことを確認してください
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
}