gpt4 book ai didi

java - 我可以仅使用 Zuul 后置过滤器获取请求的响应时间吗?

转载 作者:行者123 更新时间:2023-12-02 11:08:19 25 4
gpt4 key购买 nike

我目前使用 Zuul 作为反向代理,Ribbon 作为负载均衡器,使用 Eureka 作为服务发现。

是否可以仅使用 Zuul 后置过滤器来获取请求的响应时间?我还可以获得进入和离开网关的请求的时间戳吗?

最佳答案

我猜这是可能的,但它会涉及过滤器、restTemplate 拦截器和 servlet Filter 类的组合

我已经给出了图表,如果它们是 stackoverflow 的 plantuml 插件

想法是,创建一个 preFilter 让我们说 TimeTrackerFilter 将在请求 header 中添加入口点时间戳“time-start-id”,一个 userContextFilter 将拦截所有传入的 HTTP 请求并将 HTTP 请求映射到 userContext 类 UserContextClass由一个 getter/setter 组成从 java.lang.ThreadLocal 检索和存储值的方法

UserContextHolder.java 将 UserContext 存储在 ThreadLocal 变量中,该变量可在处理用户请求的线程调用的任何方法中访问

UserContextINterceptor 类将“time-start-id”注入(inject)到从 REST 模板执行的任何基于 HTTP 的传出服务请求

一个后置过滤器,它实际上会从请求上下文中获取时间开始ID,计算时间差异并添加一个新的 header “time take”,其值为响应的时间差异

如果您不想在调用的其他服务中看到开始时间 ID,则仅使用前置和后置过滤器就足够了(在这种情况下忽略 userContext 和拦截器)

注意: 当您想向 HTTP 请求 header 添加值时,可以使用 RequestContext 的 addZuulRequestHeader()方法。此方法将维护添加的 HTTP header 的单独映射当请求通过 Zuul 服务器的过滤器时。数据con-当目标服务是时,ZuulRequestHeader 映射中包含的内容将被合并由您的 Zuul 服务器调用。

关于java - 我可以仅使用 Zuul 后置过滤器获取请求的响应时间吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50763150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com