Я пытаюсь настроить приложение весеннего облачного консула.Весеннее облако: не могу заставить клиента работать с консулом
У меня есть услуга «распределение» и зарегистрирован в консулом (со свойством spring.application.name установлен в положение «распределение»)
У меня есть услуга «приобретение», который пытается сделать вызов услугу «распространения», используя притворство.
Вот мой основной класс
@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, URL-адрес службы «распределения» должным образом извлекается, что означает, что вся открытая вещь работает как ожидаемая редактор
Но, когда я прошу «/ потребительные симулировать» URL, я получаю следующее исключение:
com.netflix.client.ClientException: балансировки нагрузки не доступного сервера для клиента: распределение на com.netflix.loadbalancer.LoadBalancerContext.getServerFromLoadBalancer (LoadBalancerContext.java:468) ~ [ribbon-loadbalancer-2.2.0.jar: 2.2.0] на com.netflix.loadbalancer.reactive.LoadBalancerCommand $ 1.call (LoadBalancerCommand.java:184) ~ [ribbon-loadbalancer-2.2.0.jar: 2.2.0] на com.netflix.loadbalancer.reactive.LoadBalancerC ommand $ 1.call (LoadBalancerCommand.java:180) ~ [ribbon-loadbalancer-2.2.0.jar: 2.2.0] at rx.Observable.unsafeSubscribe (Observable.java:8460) ~ [rxjava-1.1.5 .jar: 1.1.5] at 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
Да, в приложении «distribution» я установил spring.application.name: распространение и в приложении «получение», я установил spring.application.name: получение. И я могу видеть обе службы, зарегистрированные в консуле. – couettos
Можете ли вы поделиться проектом? – spencergibb