如何从Micrometer Tracer获取brave.Tracing实现Lettuce Redis追踪?
解决Lettuce集成Brave Redis追踪的参数问题
要解决BraveTracing.create()的参数问题,核心是先正确创建并配置brave.Tracing实例,再将其传入方法。以下是具体步骤:
1. 确保引入必要依赖
需要引入Brave核心包、Lettuce核心包,以及Lettuce与Brave的集成包(版本请匹配你的项目环境):
<!-- Brave核心依赖 --> <dependency> <groupId>io.zipkin.brave</groupId> <artifactId>brave</artifactId> <version>5.14.1</version> </dependency> <!-- Lettuce核心 --> <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> <version>6.2.6.RELEASE</version> </dependency> <!-- Lettuce Brave集成 --> <dependency> <groupId>io.lettuce</groupId> <artifactId>lettuce-core-brave</artifactId> <version>6.2.6.RELEASE</version> </dependency>
如果使用Spring Cloud Sleuth,只需引入Sleuth starter即可,它会自动管理Brave依赖:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-sleuth</artifactId> </dependency>
2. 创建brave.Tracing实例Bean
你之前注入失败是因为Spring容器中没有brave.Tracing的实例,需要手动配置(如果用Sleuth则无需此步骤,Sleuth会自动创建):
@Bean fun tracing(): brave.Tracing { return brave.Tracing.newBuilder() .localServiceName("your-service-name") // 替换为你的服务名称 // 配置Zipkin上报地址,根据实际部署调整 .spanReporter(AsyncReporter.create(URLConnectionSender.create("http://zipkin:9411/api/v2/spans"))) .build() }
3. 配置Lettuce ClientResources
将上述brave.Tracing实例注入并传入BraveTracing.create():
@Bean(destroyMethod = "shutdown") fun lettuceClientResources(tracing: brave.Tracing): ClientResources { return DefaultClientResources.builder() .tracing(BraveTracing.create(tracing)) .build() }
关于你尝试的两种方式的说明
Tracing.current():这个方法返回当前线程绑定的Tracing实例,只有先通过Tracing.setCurrent(tracing)设置过才会有值,否则返回null,不适合直接用于Bean配置。- 注入
brave.Tracing失败:因为容器中没有该类型的Bean,要么自己配置,要么引入Spring Cloud Sleuth让它自动生成。
内容的提问来源于stack exchange,提问作者Archimedes Trajano
相关产品推荐
相关产品推荐

