- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,我正在我的 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。
我在这里使用 *
的原因是因为许多使用遥测和跟踪的库都使用了这种跳过模式。例如Opentracing
、Sleuth
、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/
您好,我正在我的 spring boot 项目中使用以下跟踪框架。 io.opentracing.contrib opentracing-spring-jaeger-cloud-st
我是一名优秀的程序员,十分优秀!