java 构造函数UtilSpanner的参数% 1需要类型为“io.micrometer.tracing.Propagator$Getter”的Bean,但找不到该Bean

cgvd09ve  于 2023-05-21  发布在  Java
关注(0)|答案(1)|浏览(166)

我正在尝试将我的应用程序升级到Java 17,我的应用程序是一个gradle项目,出于某些特定原因,我正在使用micrometer propagator代替Spring sleuth propagator。下面是我使用的代码,

import io.micrometer.tracing.Span;
import io.micrometer.tracing.SPanAndScope;
import io.micrometer.tracing.Tracer;
........

@Component
public class UtilSpanner implements BiFunction<AtomicReference<SpanAndScope>, RecieverRecord<String, ScheduleKafka>,RecieverRecord<String,ScheduleKafka>> {

private final Tracer tracer;
private final Propagator.Getter<ConsumerRecord<?,?>> extractor; 
private final Propagator propagator;

public UtilSpanner(Tracer tracer, Propagator.Getter<ConsumerRecord<?,?>> extractor //here is the problem i am getting 
, Propagator propagator){
 this.tracer = tracer;
 this.extractor = extractor;
 this.propagator = propagator;
}

我在构造函数的paramater 1中遇到问题,无法识别Propagator.Getter。
下面是gradle依赖我使用的关于千分尺

plugins{
     id 'org.springframework.boot' version '3.0.5'
     id 'io.spring.dependency-management' version '1.1.0'
     ......
}

implementation 'io.micrometer:micrometer-core:1.10.6'
implementation 'io.micrometer:micrometer-registry-promethus:1.10.6'
implementation 'org.springframework.cloud:spring-cloud-starter-cuircuitbreaker-reactor-resiliance4j:3.0.1'
implementation 'io.micrometer:micrometer-tracing:latest.integration'
implementation 'io.micrometer:micrometer-observation'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'

请让我知道如何解决这个问题

mwg9r5ms

mwg9r5ms1#

由于Propagator.Getter是上下文相关的,因此您需要自己定义它,例如:

propagator.extract(request, (record, key) -> record.getHeader(key));

另外,一些东西被重新设计,请查看io.micrometer.observation.transport包,在那里你也可以找到Propagator接口,它有RequestReplyReceiverContextReceiverContext,这可能对你有用(以及如何使用它们)。

相关问题