Spring cloud 切换到Sleuth 3.0.2后,TracerContext始终为空

Spring cloud 切换到Sleuth 3.0.2后,TracerContext始终为空,spring-cloud,spring-cloud-sleuth,Spring Cloud,Spring Cloud Sleuth,我已经将Sleuth升级到3.0.2版,并开始获得NPE。 我知道有一些突破性的变化,有一个迁移指南,但就我的一生而言,我不能说如何解决这个问题 [INFO] +- org.springframework.cloud:spring-cloud-starter-sleuth:jar:3.0.2:compile [INFO] | +- org.springframework.boot:spring-boot-starter-aop:jar:2.4.5:compile [INFO] | | \-

我已经将Sleuth升级到3.0.2版,并开始获得NPE。 我知道有一些突破性的变化,有一个迁移指南,但就我的一生而言,我不能说如何解决这个问题

[INFO] +- org.springframework.cloud:spring-cloud-starter-sleuth:jar:3.0.2:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-aop:jar:2.4.5:compile
[INFO] |  |  \- org.aspectj:aspectjweaver:jar:1.9.6:compile
[INFO] |  +- org.springframework.cloud:spring-cloud-sleuth-autoconfigure:jar:3.0.2:compile
[INFO] |  |  +- org.springframework.cloud:spring-cloud-sleuth-instrumentation:jar:3.0.2:compile
[INFO] |  |  |  \- org.springframework.cloud:spring-cloud-sleuth-api:jar:3.0.2:compile
[INFO] |  |  \- org.aspectj:aspectjrt:jar:1.9.6:compile
[INFO] |  \- org.springframework.cloud:spring-cloud-sleuth-brave:jar:3.0.2:compile
[INFO] |     +- io.zipkin.brave:brave:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-context-slf4j:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-messaging:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-rpc:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-spring-rabbit:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-kafka-clients:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-kafka-streams:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-httpclient:jar:5.13.2:compile
[INFO] |     |  \- io.zipkin.brave:brave-instrumentation-http:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-httpasyncclient:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-jms:jar:5.13.2:compile
[INFO] |     +- io.zipkin.brave:brave-instrumentation-mongodb:jar:5.13.2:compile
[INFO] |     +- io.zipkin.aws:brave-propagation-aws:jar:0.21.3:compile
[INFO] |     \- io.zipkin.reporter2:zipkin-reporter-metrics-micrometer:jar:2.16.1:compile
[INFO] |        \- io.zipkin.reporter2:zipkin-reporter:jar:2.16.1:compile
[INFO] |           \- io.zipkin.zipkin2:zipkin:jar:2.23.0:compile
正在注入的场

@Autowired
protected Tracer tracer;
抛出NPE的行:

tracer.currentSpan().context().traceId();
currentSpan()方法,其中ThreadContext为null

@Nullable
public Span currentSpan() {
    TraceContext context = this.currentTraceContext.get();
    return context == null ? null : new LazySpan(this, context);
}
此外,此行还生成null:
String traceId=MDC.get(“X-B3-traceId”)

MDC.getCopyOfContextMap()返回一个空映射

以下是图片完整性的方法代码:

@GetMapping(path = "/user", produces = APPLICATION_JSON_VALUE)
@RequiresPermissions(IAM_USER_GET_PERMISSION)
public Object getMyself() {
    UserContext userContext = (UserContext) SecurityUtils.getSubject().getPrincipal();
    String traceId = MDC.get("X-B3-TraceId");
    System.out.println(traceId);
    System.out.println(MDC.getCopyOfContextMap());
    OperationContext operationContext = OperationContext.newInstance(userContext, tracer.currentSpan().context().traceId());
    UserBO user = identityManager.getMyself(operationContext);
    return ResponseEntity.status(HttpStatus.OK).body(new UserEnvelopeDTO(iamDTOMapper.mapScoped(user, user.getActiveOrganizationId())));
}
正如您所看到的,这是一个HTTP线程,无法正确填充MDC

此外,我还配置了这个bean:

@Bean
public CurrentTraceContext.ScopeDecorator legacyMDCKeys() {
    return MDCScopeDecorator.newBuilder()
            .clear()
            .add(CorrelationScopeConfig.SingleCorrelationField.newBuilder(BaggageFields.TRACE_ID)
                    .name("X-B3-TraceId").build())
            .add(CorrelationScopeConfig.SingleCorrelationField.newBuilder(BaggageFields.PARENT_ID)
                    .name("X-B3-ParentSpanId").build())
            .add(CorrelationScopeConfig.SingleCorrelationField.newBuilder(BaggageFields.SPAN_ID)
                    .name("X-B3-SpanId").build())
            .add(CorrelationScopeConfig.SingleCorrelationField.newBuilder(BaggageFields.SAMPLED)
                    .name("X-Span-Export").build())
            .build();
}