Как изменить ServiceUd Zuul во время выполнения на основе параметра запроса? - PullRequest
0 голосов
/ 19 сентября 2019

Как добиться изменения servciceId на основе параметров запроса ??

Ниже приведен наш Zuul Config


zuul:
  host:
    connect-timeout-millis: 200000
    connection-request-timeout-millis: 200000
    socket-timeout-millis: 200000
  ignored-services: "*"
  routes:
    route-1:
      path: /path1/**
      serviceId: ServiceA
    route-2:
      path: /path2/**
      serviceId: ServiceB

Здесь мы выбираем serviceId на основе path1 /path2.

если http://localhost:8050/path1/endpointPath?requestParam=ParamValue1, это должно вызвать serviceA

, если http://localhost:8050/path1/endpointPath?requestParam=ParamValue2, это должно вызвать serviceB

1 Ответ

0 голосов
/ 19 сентября 2019

удалось добиться этого с помощью фильтра маршрута и изменений конфигурации

Конфиг:

 routes:
    route-1:
      path: /**
      serviceId: ServiceA
      stripPrefix: true

RouteFilter:

 Optional<String> parameter = Optional.ofNullable(ctx.getRequest().getParameter("requestparam"));
        if (parameter.isPresent()) {
            if (parameter.get().equalsIgnoreCase("ValueA")) {
                ctx.set("serviceId", "ServiceA");

            } else {
                ctx.set("serviceId", "ServiceB");

            }
        }

Это нормально или у нас естькакой-нибудь более простой способ достичь?Вот что там можно ограничить, чтобы не определять serviceId в файле свойств?

...