Spring cloud routing

Делаю приложение на микросервисной архитектуре с использование eureka и spring cloud. На текущий момент у меня запущен сервер аутентификации, сервер eureka, 3 реплики сервиса с бизнес логикой и клиент. Клиент делает запрос на spring cloud gateway сервер с такой конфигурацией:

@Configuration
@RequiredArgsConstructor
public class RouterConfigurer {
    private final JwtAuthFilter jwtAuthFilter;

    @Bean
    public RouteLocator gatewayRoutes(RouteLocatorBuilder builder) {
        return builder
                .routes()
                .route(r -> r.path("/eval/**").filters(f -> 
                            f.filter(jwtAuthFilter)).uri("http://localhost:10020/"))
                .build();
    }
}

Мне необходимо разбить запрос, приходящий на eval/**, на подзапросы, исходя из параметров в json. Т.е. я из 1 json роутер должен сделать три и распределить их на 3 реплики бизнес сервера. При этом хотелось бы динамически определять, на какое число подзапросов необходимо разбить общий запрос, отталкиваясь от количества запущенных реплик бизнес сервера. Также я бы хотел не подкладывать uri реплик во время запуска, а тянуть их из eureka. У меня есть готовая реализация посредством ручного роутинга (я в gateway получаю запрос на RestController и через WebClient отправляю его куда нужно), но я думаю это не самый лучший способ. Есть ли другие способы сделать нечто подобное?


Ответы (0 шт):