Spring Eureka LoadBalanced RestTemplate, когда не подключен - PullRequest
1 голос
/ 30 апреля 2020

Вот мои зависимости:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Когда мое приложение Spring Boot зарегистрировано в Eureka, я могу определить компонент RestTemplate следующим образом:

@Bean
@LoadBalanced
public RestTemplate restTemplate() {
  return new RestTemplate();
}

И в моем службы Я могу отправлять запросы другим службам, используя их зарегистрированные spring.application.name:

restTemplate.getForEntity("http://application1/test", String.class);

Как определить, где http://application1/ находится с отключенной Eureka?

eureka.client.enabled=false

Тест текущей реализации :

@Configuration
public class RibbonConfig {

  @Bean
  public ServerList<Server> serverServerList() {
    return new ConfigurationBasedServerList();
  }
}

@Configuration
public class WebConfig {
  @Bean
  @LoadBalanced
  public RestTemplate restTemplate() {
    return new RestTemplate();
  }
}

@Component
public class TestService implements CommandLineRunner {
  @Autowired
  private RestTemplate restTemplate;

  @Override
  public void run(String... args) throws Exception {
    ResponseEntity<String> responseEntity = restTemplate.getForEntity("http://application1/test", String.class);

    System.out.println(responseEntity);
  }
}

@RibbonClient(value = "application1", configuration = RibbonConfig.class)
@SpringBootApplication
public class Demo5Application {

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

bootstrap .yml

eureka:
  client:
    enabled: false

application1:
  ribbon:
    list-of-servers: http://localhost:8081/

1 Ответ

0 голосов
/ 03 мая 2020

вы можете определить новую конфигурацию RibbonClient для вашего сервиса следующим образом:

@Configuration
@RibbonClient(name = "application1", configuration = Application1RibbonClientConfiguration.class)
public class Application {
...
}

class Application1RibbonClientConfiguration{
    @Bean
    public ServerList<Server> ribbonServerList() {
        return new ConfigurationBasedServerList(); 
    }
}

вы можете пропустить все конфигурации выше, если у вас нет eureka на classPath

, следующий в вашем В файле свойств вы можете перечислить все расположение серверов следующим образом:

application1.ribbon.listOfServers=..,..,..
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...