2015-06-25 4 views
7

Я хочу реализовать пользовательские фильтры для моего прокси-сервера Zuul. Теперь я знаю, что было много разговоров по этому вопросу here, и я взглянул на предоставленный ответ с примерами фильтров и документацией Spring Cloud, которые я просмотрел несколько раз. Я попытался скопировать некоторые из содержимого фильтров в мое использование, но это не сработало.Создание пользовательских фильтров Zuul

У меня есть сервер Eureka, регистрирующий 3 отдельные службы, один из которых является входной дверью двух других, собирая информацию от каждого из них и извлекая ее.

Что я хочу сделать, это перенаправить запросы, которые Zuul получает в начале процесса, перенаправить их через определенные службы, используя параметры URL, чтобы определить, какой процесс следует нацелить вместо другого. Я уже создал фильтр, помеченный аннотацией @Component, реализующий ZuulFilter. Я не знаю, как сделать перенаправление работой и какие методы использовать.

Итак, вопрос в следующем: как я могу перенаправить входящие запросы на разные зарегистрированные службы, используя параметры URL?

ответ

8

Посмотрите на PreDecorationFilter на пример, который соответствует маршрутам, основанным на пути URL (то есть /myservice). Если он соответствует полному URL-адресу, он устанавливает routeHost в контексте ленты, в противном случае он устанавливает serviceId (который будет использовать ленту для маршрутизации). Вам нужно будет написать нечто похожее, которое будет соответствовать параметру.

+0

спасибо. Я взгляну на это прямо сейчас и вернусь к вам. – chesh

+0

Я посмотрел код, который вы показываете в своем проекте, и я должен сказать, что у меня нет такой конфигурации, поскольку мой Zuul-сервер - это простое приложение Spring с '@ EnableZuulProxy'. Не хватает ли какой-либо конфигурации для добавления фильтров? Или мне достаточно создать его, поставить над ним аннотацию '@ Bean' и запустить сервер? – chesh

+1

Проект, который я показал вам, является источником, поэтому, конечно, у вас нет такой конфигурации. Да, создание фильтра с '@ Bean' - это то, что вам нужно сделать. – spencergibb