我需要将具有现有ID(我们已经从主要起源应用程序创建了某种相关ID)的traceId设置为勇敢的示踪剂。
我不想使用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”,很勇敢。整个目的是使用zipkin ui中的correlationId而不是traceId进行搜索。
答案 0 :(得分:0)
您将需要自己的PropagationFactory
实现。这是默认值:https://github.com/openzipkin/brave/blob/master/brave/src/main/java/brave/propagation/B3Propagation.java
您可以创建一个bean,sleuth应该使用它而不是这个。
更具体地说,您将需要一个带有自定义TraceContext.Extractor<C>
实现的实现。然后可以从您的标头中提取跟踪ID,并添加返回适当的TraceContext
。然后,它可以使用常规头将其传递。如果要在向下游发送时使用相同的相关标头,则还必须实现TraceContext.Injector<C>
。