2016-06-26 3 views
1

Я пытаюсь настроить приложение весеннего облачного консула.Весеннее облако: не могу заставить клиента работать с консулом

У меня есть услуга «распределение» и зарегистрирован в консулом (со свойством 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]

Я пропускаю любую конфигурацию?

Благодарим за помощь.

+0

Вы добавили spring.application.name в bootstrap.yml? – spencergibb

+0

Да, в приложении «distribution» я установил spring.application.name: распространение и в приложении «получение», я установил spring.application.name: получение. И я могу видеть обе службы, зарегистрированные в консуле. – couettos

+0

Можете ли вы поделиться проектом? – spencergibb

ответ

0

spencergibb указал на проблему: не была установлена ​​конечная точка проверки работоспособности. Простое добавление пружинного приставки к зависимостям решило проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^