【发布时间】:2021-10-20 19:36:20
【问题描述】:
试图将一些代码从 RestTemplate 迁移到 Webclient。旧代码在 RestTemplate 调用周围包装了一个用于度量收集的计时器,并添加了两个基于请求输入的额外自定义标签。
我们正在创建一个 WebClient 并将 MetricsWebCLientFilterFunction 添加到构建器作为过滤器。我还看到了 DefaultWebClientExchangeTagsProvider。问题是我见过的唯一应用标签的机制是在那个构建器上。我们不想在构建器的每个请求上创建一个新的 WebClient,而且我没有看到将标签添加到单个 webclient get/options/post 的方法。
是否有一种机制可以在实际 Web 客户端获取的单个指标上添加标记,或者我们是否仅限于每次都创建一个构建器?
对于上下文,我们正在尝试记录客户端 ID 和另一个不属于调用 URL 模式的自定义标识符。
到目前为止,我唯一的想法是添加一个 HTTP 标头,然后创建一个自定义 WebClientExchangeTagsProvider,它会在请求进入时添加标签。问题是我们不希望这些标头传到外部我们正在调用的供应商服务。
我们使用的是 Spring Boot 2.5.4,它是一个 Spring MVC 应用程序,我们希望最终迁移到 webflux。
【问题讨论】: