2016-06-26 7 views
1

私は簡単な春の雲の領事のアプリケーションを設定しようとしています。春の雲:フェールクライアントが領事と仕事をすることができません

は、私は、「配信」サービスを持っていると領事に登録

(設定spring.application.nameプロパティで「ディストリビューション」へ)Iへの呼び出しをしようとしている「取得」サービスを持っています「配布」サービスは、feignを使用しています。ここで

はここ

@Configuration 
@EnableAutoConfiguration 
@EnableDiscoveryClient 
@RestController 
@EnableFeignClients 
@EnableHystrix 
public class Acquisition { 


    @Autowired 
    private DiscoveryClient discoveryClient; 

    @Autowired 
    private DistributionClient distributionClient; 


    @RequestMapping("/use-feign") 
    public String sendData() { 
     distributionClient.sendData(new Data("Hello World")); 
     return "sent"; 
    } 

    @RequestMapping("/disco") 
    public String disco() { 
     List<ServiceInstance> list = discoveryClient.getInstances("distribution"); 
     if (list != null && list.size() > 0) { 
      return list.get(0).getUri().toString(); 
     } 
     return null; 
    } 

    public static void main(String[] args) { 
     SpringApplication.run(Acquisition.class, args); 
    } 

} 

は私装うクライアント

@FeignClient(value = "distribution") 
interface DistributionClient { 

    @RequestMapping(method = RequestMethod.POST, value = "/data", consumes = "application/json") 
    void sendData(Data data); 
} 

であり、ここで私は、 "/ディスコ" を要求すると、私のpom.xml

<dependencies> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-consul-all</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-feign</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.cloud</groupId> 
     <artifactId>spring-cloud-starter-hystrix</artifactId> 
    </dependency> 
</dependencies> 

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework.cloud</groupId> 
      <artifactId>spring-cloud-consul-dependencies</artifactId> 
      <version>1.0.1.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

である私のメインクラスですUrlでは、 "distribution"サービスのurlが適切に検索されます。つまり、ディスカバリー全体が期待どおりに動作していることを意味しますed。

しかし、私は「/使用-装う」URLを要求したとき、私は次の例外を取得:

com.netflix.client.ClientException:ロードバランサは、クライアントのために 使用可能なサーバを持っていない:配布 com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer(LoadBalancerContext.java:468) 〜[ribbon-loadbalancer-2.2.0.jar:2.2.0] at com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 1.call( LoadBalancerCommand.java:184) 〜[ribbon-loadbalancer-2.2.0.jar:2.2.0] at com.netflix.loadbalancer.reactive.LoadBalancerC (リバースロードバランサ2.2.0.jar:2.2.0) でrx.Observable.unsafeSubscribe(Observable.java:8460) 〜[rxjava-1.1.5] .jar:1.1.5] の場合rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) 〜[rxjava-1.1.5.jar:1.1.5] at rx.internal.operators.OnSubscribeConcatMap。コール(OnSubscribeConcatMap.java:42) 〜[rxjava-1.1.5.jar:1.1.5]

私は、任意の構成足りませんか?

ありがとうございました。

+0

spring.application.nameをbootstrap.ymlに入れましたか? – spencergibb

+0

はい、「流通」アプリではspring.application.name:distributionを設定し、「取得」アプリではspring.application.name:acquisitionを設定しました。領事館に両方のサービスが登録されているのを見ることができます – couettos

+0

プロジェクトを共有できますか? – spencergibb

答えて

0

spencergibb:ヘルスチェックエンドポイントが展開されていません。 問題を解決した依存関係にspring-boot-actuatorを追加するだけです。

関連する問題