Могу ли я получить время ответа на запрос, используя только пост-фильтр Zuul? - PullRequest
0 голосов
/ 08 июня 2018

В настоящее время я использую Zuul в качестве обратного прокси, Ribbon в качестве балансировщика нагрузки и Eureka в качестве обнаружения службы.

Можно ли получить время ответа на запрос, используя только постфильтр Zuul?Могу ли я также получить отметки времени входа и выхода из шлюза?

1 Ответ

0 голосов
/ 10 июня 2018

Я думаю, это возможно, но это будет включать комбинацию фильтров, перехватчик restTemplate и классы фильтров сервлета.

Я бы дал диаграмму, если бы это был плагин Plantuml для stackoverflow.

создать preFilter, скажем, TimeTrackerFilter, который бы добавил метку времени точки входа «time-start-id» в заголовок запроса, userContextFilter, который будет перехватывать все входящие HTTP-запросы и сопоставлять HTTP-запрос с классом userContext, UserContextClass состоит из getter /метод setter, который извлекает и сохраняет значения из java.lang.ThreadLocal

UserContextHolder.java для хранения UserContext в переменной ThreadLocal, доступной в любом методе, вызываемом потоком, обрабатывающим запрос пользователя

Класс UserContextINterceptor для внедрения «идентификатора времени начала» в любой исходящий запрос службы на основе http, выполняемый из шаблона отдыха.

пост-фильтр, который фактически получает идентификатор времени начала из контекста запроса,рассчитайте разницу во времени и добавьте новый заголовок «время взято» со значением, равным разности времени, к ответу

на тот случай, если вы не хотите видеть идентификатор времени начала в других вызываемых сервисах, используя только пре- и пост-фильтр.достаточно (игнорируйте userContext и перехватчики в этом случае)

note : когда вы хотите добавить значение в заголовки HTTP-запроса, вы используете метод RequestContext addZuulRequestHeader ().Этот метод будет поддерживать отдельную карту заголовков HTTP, которые были добавлены во время прохождения запроса через фильтры с вашего сервера Zuul.Данные, содержащиеся в карте ZuulRequestHeader, будут объединены при вызове целевой службы вашим сервером Zuul.

...