クライアントのデフォルトのユーレカは、サーバにホスト名の代わりにIP登録を使用することです。
この場合、装うクライアントはユーレカ間サービスを通じて互いを呼び出すときに呼び出され、そのコールに失敗しましたホスト名を使用します使用します。
次のように考える:
java.net.UnknownHostExceptionを発行:XXXX-ホスト名によって引き起こさ
java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)AT
java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)AT
java.net AT。 socket.connect(Socket.java:589)
sun.net.NetworkClient.doConnect(NetworkClient.java:175)AT
sun.net.www.http.HttpClient.openServer(HttpClient.java:463)AT
sun.net.www AT .http.HttpClient.openServer(HttpClient.java:558)
sun.net.www.http.HttpClient AT <初期化>(HttpClient.java:242)
sun.net.www.http.HttpClient.New AT(HttpClient.java :339)
sun.net.www.http.HttpClient.New(HttpClient.java:357)で
sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)で
sun.net.www.protocol.httpで.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)で
sun.net.www.protocol.http.HttpURLConnection.connectで(HttpURLConnection.java :984)
sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1334)で
sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1309)で
feign.Client $でDefault.convertAndSend(Client.java:133)
feign.Client $ Default.execute(Client.java:73)で
org.springframework.cloud.sleuth.instrument.web.client.feign.TraceFeignClient.execute(TraceFeignClient.java:80)で
org.springframework.cloud.netflixで.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:77)
org.springframework.cloud.netflix.feign.ribbon.FeignLoadBalancer.execute(FeignLoadBalancer.java:45)で
com.netflix.client.AbstractLoadBalancerAwareClient $ 1.callで( AbstractLoadBalancerAwareClient.java:109)
com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 3 $ 1.call(LoadBalancerCommand.java:303)で
com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 3 $ 1.callで(LoadBalancerCommand.java:287)
rx.internal.util.ScalarSynchronousObservable $ 3.call(ScalarSynchronousObservable.java:231)で
rx.internal.util.ScalarSynchronousObservable $ 3.call(ScalarSynchronousObservable.java:228)で
rx.Observable.unsafeSubscribe(Observable.java:10211)で
のrx.internal.operators.OnSubscribeConcatMap $ ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:286)
rx.internal.operators.OnSubscribeConcatMap $ ConcatMapSubscriber.onNext(OnSubscribeConcatMap.java:144)で
com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 1.callで(LoadBalancerCommand.java:185)
com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 1.callで(LoadBalancerCommand.java:180)
rx.Observable.unsafeSubscribe(Observable.java:10211)で
ソリューション:
1、サービスユーレカ・サーバーを使用するには、ipは、割り当てはユーレカクライアントを次の増加する必要があります。
eureka.instance.prefer-IPアドレス= trueまたは eureka.instance.prefer-IPアドレス=真
eureka.instance.instance-spring.cloud.client.ipAddress ID = $ {}:$ {##}はserver.port例のみを表示するために、このラインは、増加する時間から追加することができます
インタフェースの例を装います:
@FeignClient( "XXX-ビジネスサービス名")
パブリックインターフェースMyFeignClient {
...
}
2、マルチ環境に合うように、コンフィギュレーション・インジェクションを使用して、ドメイン名注入の注釈のドメインネームサービスによって、ドメイン名の呼び出しを使用して
装う例をインタフェース:
@FeignClient(名前= "XXX-ビジネスサービス名"、URL = "のhttp:// $ {xxx.business.service.domain}" )
のパブリックインターフェイスMyFeignClient {
...
}