gpt4 book ai didi

java - 'opentracing: spring: web: ignoreAutoConfiguredSkipPatterns: true' 是做什么的?

转载 作者:行者123 更新时间:2023-12-05 04:35:09 27 4
gpt4 key购买 nike

您好,我正在我的 spring boot 项目中使用以下跟踪框架。

<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
<version>3.3.1</version>
</dependency>

当我启动我的应用程序时出现以下异常。

┌─────┐
| org.springframework.cloud.netflix.zuul.ZuulProxyAutoConfiguration (field private java.util.List org.springframework.cloud.netflix.zuul.ZuulServerAutoConfiguration.configurers)
↑ ↓
| io.opentracing.contrib.spring.web.starter.ServerTracingAutoConfiguration (field private java.util.regex.Pattern io.opentracing.contrib.spring.web.starter.ServerTracingAutoConfiguration.skipPattern)
↑ ↓
| skipPattern defined in class path resource [io/opentracing/contrib/spring/web/starter/SkipPatternAutoConfiguration.class]
↑ ↓
| org.springframework.cloud.client.CommonsClientAutoConfiguration$ActuatorConfiguration (field private java.util.List org.springframework.cloud.client.CommonsClientAutoConfiguration$ActuatorConfiguration.hasFeatures)
└─────┘

我可以通过在我的 application.yml 文件中放置以下属性来消除错误。但是,我不知道这个标志的影响。有人可以解释一下这个设置的后果吗?

  spring:
web:
ignoreAutoConfiguredSkipPatterns: true

最佳答案

您提到的问题是由于循环依赖引起的。错误日志中的上述所有库都使用了 Spring Boot 执行器和自动配置库。
已知的 Github 问题很少。您可以在 skip-pattern circular dependency 中找到详细信息和 Zuul Proxy circular dependency .

解法正确

spring.web.ignoreAutoConfiguredSkipPatterns: true

我看到@saver 提供了很好的信息。我想详细解释一下。

通过 opentracing-spring-jaeger-cloud-starter 依赖,所有应用程序都自动使用 OpenTracing 代理进行检测,这将创建与内部操作(应用程序、数据库、缓存等)相关的跟踪/跨度。等)。

有一个名为 SkipPatternAutoConfiguration 的类,它配置所有执行器跳过模式。因此,您的问题与 here 有关

通过 TracingFilter,所有采样的传入请求都会导致创建 Span。通过 skip-pattern 属性,我们配置要跳过的 URI。默认情况下,所有 spring boot 执行器端点都会自动添加到跳过模式中。如果您想禁用此行为,请将 *.skip-patterns 设置为 true。

我在这里使用 * 的原因是因为许多使用遥测和跟踪的库都使用了这种跳过模式。例如OpentracingSleuth、Spring cloud actuators

您设置的属性被ConditionalOnProperty读取

 @ConditionalOnProperty(value = "opentracing.spring.web.ignoreAutoConfiguredSkipPatterns", havingValue = "false", matchIfMissing = true)

默认值为 matchIfMissing = true ,因此只要您不提供该值,应用程序就会尝试配置跳过模式。它在循环依赖中对你来说失败了。现在您已将 ignoreAutoConfiguredSkipPatterns 设置为 true,属性 havingValue = "false" 不满足并且未配置跳过模式。因此,问题不会重现。

几个链接:
SkipPatternAutoConfiguration
ServerTracingAutoConfiguration
CommonsClientAutoConfiguration
ZuulProxyAutoConfiguration

关于java - 'opentracing: spring: web: ignoreAutoConfiguredSkipPatterns: true' 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71076131/

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