我正在尝试创建一个示踪剂,然后是示踪剂的一个跨度。执行工作。然后关闭跨度。我希望关闭操作将调用 spanReporter.report,它应该将数据发布到可用的 Zipkin 服务器(默认本地主机)
然而,这并没有发生。代码如下。我注意到我正在使用 NeverSampler。将其更改为 AlwaysSampler(目前)。我还使用 NoOpSpanReporter 作为默认的 SpanReporter(什么都不做)。我想将其更改为 ZipkinSpanReporter。(或者是其他东西)。这就是我卡住的地方。
问题:
- 根据粘贴的代码,我应该使用什么类型的默认跨度报告?
- 哪个 jar 将具有正确的 Span Reporter。我在 spring-cloud-sleuth-zipkin 中看到了 ZipkingSpanReporter 类。那么,我应该删除 spring-cloud-sleuth-* 依赖项并将其替换为 zipkin 依赖项吗?
public class TestClass {
private TestClass() {
// Default constructor
}
public static DefaultTracer createDefaultTracer() {
boolean isTraceId128 = false;
Sampler sampler = createDefaultTraceSampler();
Random random = createDefaultRandomForSpanIds();
SpanNamer spanNamer = createDefaultSpanNamer();
SpanLogger spanLogger = createDefaultSpanLogger();
SpanReporter spanReporter = createDefaultSpanReporter();
TraceKeys traceKeys = new TraceKeys();
return new DefaultTracer(sampler, random, spanNamer, spanLogger, spanReporter, isTraceId128, traceKeys);
}
public static Random createDefaultRandomForSpanIds() {
return new Random();
}
public static Sampler createDefaultTraceSampler() {
//return NeverSampler.INSTANCE;
return new AlwaysSampler();
}
public static SpanNamer createDefaultSpanNamer() {
return new DefaultSpanNamer();
}
public static SpanReporter createDefaultSpanReporter() {
return new NoOpSpanReporter(); //What default span reporter should I use
}
public static SpanLogger createDefaultSpanLogger() {
return new NoOpSpanLogger(); //I do not care about logging spans using slf4j for now
}
}
现在使用上面的代码片段:
DefaultTracer tracer = TestClass.createDefaultTracer();
Span mySpan=tracer.createSpan("testSpan");
//Do work
tracer.close(mySpan);//This should stop the span and report the span to zipkin for display
注意:
这个特定项目在其任何服务中都没有任何 http 调用。它是一个数据处理项目。
@SpringBootApplication 尚未使用。(尽管所有 zipkin 示例都使用它)。有必要吗?