当前位置: 首页 > 知识库问答 >
问题:

用Spring WebClient实现动态度量标记

谷梁英毅
2023-03-14

试图将一些代码从RestTemplate迁移到WebClient。旧代码在RestTemplate调用周围包装了一个用于度量收集的计时器,并根据请求输入添加了两个额外的自定义标记。

我们正在创建一个WebClient,并将MetricsWebCLientFilterFunction作为过滤器添加到构建器中。我还看到了DefaultWebClientExchangeTagsProvider。问题是,我所见过的应用标记的唯一机制是在构建器上。我们不希望在来自构建器的每个请求上都创建一个新的WebClient,我也没有看到向单个WebClient get/options/post添加标记的方法。

是否有机制将标记添加到实际webclient get上的单个度量中,或者我们每次都局限于创建一个构建器?

对于上下文,我们试图记录客户端id和另一个不属于调用URL模式的自定义标识符。

共有1个答案

甄越
2023-03-14

在创建WebClient之后,没有一种机制可以为每个请求发布自定义标记。但是,可以这样做

val metricFilter = MetricWebClientFilterFunction(meterRegistry), CustomTagProvider(customValString), "metric-name", AutoTimer.ENABLED)
webClient.mutate().filter(metricFilter).build().get() ...

然后创建一个自定义度量类

class CustomTagProvider(private val customValString: String) : DefaultWebClientExchangeTagProvider() {
    override fun tags(request: ClientRequest, response: ClientRespose, throwable: Throwable): Iterable<Tag> {
        val custom: Tag.of("custom", customValString)
        val tags: MutableList<Tag> = mutableListOf(custom)
        tags.addAll(super.tags(request, response, throwable))
        return tags
    }
}
 类似资料:
  • 动态调度标签即为根据设定的条件在资源调度前动态为宿主机绑定调度标签。 动态调度标签即为根据设定的条件在资源调度前动态为宿主机绑定调度标签,每次调度宿主机绑定的标签不一定相同,从而实现资源的灵活调度。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “主机/调度/动态调度标签” 菜单项,进入动态调度标签页面。 新建动态调度标签 该功能用于设置动态调度标签的条件,为符合动态调度标签条件的

  • 我目前正在研究一个为microprofile容错框架设置度量标记的解决方案。我们将它与度量一起使用,但不能通过容错注释直接设置标记。 因此,我们提出了一个解决方案,通过拦截器设置值,然后由自定义的读取。检查其方法中的和配置键。如果每次处理容错注释时都调用,那么这基本上是可行的。但似乎情况并非如此,方法的调用是随机发生的。 在我看来,ConfigSources及其应该始终被调用,因为开发人员可能依赖

  • 本文向大家介绍Android  view自定义实现动态进度条,包括了Android  view自定义实现动态进度条的使用技巧和注意事项,需要的朋友参考一下 Android  自定义view实现动态进度条 效果图: 这个是看了梁肖的demo,根据他的思路自己写了一个,但是我写的这个貌似计算还是有些问题,从上面的图就可以看出来,左侧、顶部、右侧的线会有被截掉的部分,有懂得希望能给说一下,改进一下,这个

  • 我正在尝试使用动态编程实现斐波那契序列。它显示一个错误。这里有什么问题?

  • 本文向大家介绍js实现动态时钟,包括了js实现动态时钟的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现动态时钟的具体代码,供大家参考,具体内容如下 示例展示: 更多JavaScript时钟特效点击查看:JavaScript时钟特效专题 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。