私は簡単な春の雲の領事のアプリケーションを設定しようとしています。春の雲:フェールクライアントが領事と仕事をすることができません
は、私は、「配信」サービスを持っていると領事に登録
(設定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]
私は、任意の構成足りませんか?
ありがとうございました。
spring.application.nameをbootstrap.ymlに入れましたか? – spencergibb
はい、「流通」アプリではspring.application.name:distributionを設定し、「取得」アプリではspring.application.name:acquisitionを設定しました。領事館に両方のサービスが登録されているのを見ることができます – couettos
プロジェクトを共有できますか? – spencergibb