升级Java17后Micrometer Propagator.Getter Bean缺失问题求助
解决Micrometer Propagator.Getter Bean缺失问题
问题原因
Spring容器中未注册io.micrometer.tracing.Propagator$Getter<ConsumerRecord<?,?>>类型的Bean,导致UtilSpanner构造器注入失败。
解决方案
手动创建并注册该类型的Bean,实现从Kafka ConsumerRecord的headers中提取链路追踪头信息的逻辑:
步骤1:创建配置类注册Bean
新增一个配置类,定义Propagator.Getter<ConsumerRecord<?, ?>>的Bean:
import io.micrometer.tracing.Propagator; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.common.header.Header; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TracingConfig { @Bean public Propagator.Getter<ConsumerRecord<?, ?>> kafkaConsumerRecordGetter() { return (carrier, key) -> { Header header = carrier.headers().lastHeader(key); return header != null ? new String(header.value()) : null; }; } }
步骤2:修正代码拼写错误
你的代码中存在两处拼写错误,需修正以避免编译问题:
SPanAndScope→SpanAndScopeRecieverRecord→ReceiverRecord
步骤3:验证依赖配置
确保Gradle依赖中包含Spring Kafka相关依赖(如果尚未添加):
implementation 'org.springframework.kafka:spring-kafka'
说明
该Bean实现了从Kafka消息头中提取指定键值的逻辑,适配Micrometer Tracing的链路追踪头提取需求。配合你已引入的micrometer-tracing-bridge-brave,Brave的Propagator实现会被自动注册到容器中,无需额外配置。
内容的提问来源于stack exchange,提问作者Jeet
相关产品推荐
相关产品推荐

