gpt4 book ai didi

spring-cloud - 如何在 Spring Sleuth 和 brave 中使用 TraceContext 设置 traceId?

转载 作者:行者123 更新时间:2023-12-05 06:29:19 43 4
gpt4 key购买 nike

我需要将具有现有 ID 的 traceId(我们已经从主要来源应用程序创建了某种关联 ID)设置到 brave tracer 中。

我不想使用 Spring Sleuth/brave 创建的一个,因为我想让它在我的不同微服务中保持一致。我能够创建跟踪和跨度,并能够将所有详细信息发送到 Zipkin。我的示例片段:

import brave.Span;
import brave.Span.Kind;
import brave.Tracer;
import brave.propagation.TraceContext;

span = this.tracer.nextSpan().name("myservice");
span.kind(Kind.SERVER);
span.tag("path", servletPath).start();

我正在使用:Spring Cloud 'Greenwich.BUILD-SNAPSHOT' 和 brave。整个目的是在 zipkin ui 中使用 correlationId 而不是 traceId 进行搜索。

最佳答案

您需要自己的 PropagationFactory执行。这是默认的:https://github.com/openzipkin/brave/blob/master/brave/src/main/java/brave/propagation/B3Propagation.java

您可以创建一个 bean,侦探应该使用那个而不是这个。

更具体地说,您需要一个带有自定义 TraceContext.Extractor<C> 的实现执行。然后这可以从您的 header 中提取跟踪 ID,并添加返回适当的 TraceContext .然后它可以使用普通 header 传递它。如果您想在向下游发送时使用相同的相关 header ,那么您还必须实现 TraceContext.Injector<C> .

关于spring-cloud - 如何在 Spring Sleuth 和 brave 中使用 TraceContext 设置 traceId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53653606/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com