Я работаю с Spring Boot, и у меня есть установка Eureka Server, где некоторые микросервисы зарегистрированы для Service Discovery. Теперь я хотел бы, чтобы мой шлюз API, который я зарегистрировал как клиент Eureka, динамически перенаправлял на эти микросервисы вместо жесткого кодирования их URI.

Примерно так, где «AuthMicroservice» - это имя уже зарегистрированного микросервиса:

    @Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(p -> p
                    .path("/auth/asdh26627s8")
                        //.uri("http://localhost:8080/auth")
                        .uri("http://AuthMicroservice")
                )
                .build();
    }

Когда я пытаюсь это сделать, он сообщает мне, что было «исключение java.net.UnknownHostException: не удалось разрешить AuthMicroservice после 2 запросов».

Так что мне интересно, возможно ли это вообще? Если да, то как мне подойти к этому?

0
Marina Santana 27 Фев 2021 в 05:12

1 ответ

Лучший ответ

Нашел решение. Все, что мне нужно было сделать, это заменить «http» в URI на «lb», чтобы включить балансировку нагрузки.

@Bean
    public RouteLocator customRouteLocator(RouteLocatorBuilder builder) {
        return builder.routes()
                .route(p -> p

                    .path("/auth/asdh26627s8")
                        .uri("lb://AuthMicroservice/auth")
                )
                .build();
    }
0
Marinabsa 28 Фев 2021 в 00:09