Заставьте консула работать с Service Discovery по имени с сбалансированной нагрузкой Rest Template - PullRequest
0 голосов
/ 03 мая 2020

Make consul работает с Service Discovery по имени (вместо использования жестко запрограммированного URL-адреса службы) со сбалансированной нагрузкой. Шаблон отдыха

Я использую @EnableDiscoveryClient над классом моего приложения.

My boostrap.yml - включение `ленты

spring:
  cloud:
    consul:
      discovery:
        serviceName: ${spring.application.name}
        healthCheckPath: /${spring.application.name}/actuator/health
        healthCheckInterval: 20s
        ribbon:
          enabled: true
      config:

My WsConfig с шаблоном пружинного упора @LoadBalanced

@Configuration
public class WsConfig {

    @LoadBalanced // this actually should have enabled `ribbon`
    @Bean("applicationJsonRestTemplate")
    @Scope("prototype")
    public RestTemplate applicationJsonRestTemplate() { ...

(я проверял как с аннотацией @Scope("prototype"), так и без )

Я зарегистрировался consul, зарегистрировано обслуживание my-service. Таким образом, из оставшегося шаблона я бы ожидал, что он будет преобразован из my-service в реальный URL.

 ... restTemplate.exchange("http://my-service/get",HttpMethod.GET, new HttpEntity<Object>(httpHeaders), new ParameterizedTypeReference<List<MyObject>>() {});

Но это не так. Он по-прежнему вызывает неразрешенный http://my-service/get и, конечно, не работает.

Q: Это должно работать? Что я пропустил?

...