I am trying to create a tracer, then a span from the tracer. Performing work. Then closing the span. I would expect that the close action will call spanReporter.report, which should post the data to an available Zipkin server (default localhost)
However, that is not happening. Code below. I noticed that I was using NeverSampler. Changed it to AlwaysSampler (for now). I was also using NoOpSpanReporter as the default SpanReporter (which does nothing). I want to change it to a ZipkinSpanReporter. (Or something else). This is where I am stuck.
Questions:
- Based on the pasted code, what should be the correct type of default span report that I should use?
- Which jar will have the correct Span Reporter. I see class ZipkingSpanReporter in spring-cloud-sleuth-zipkin. So then, should I remove the spring-cloud-sleuth-* dependency and replace it with just the zipkin dependency?
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
}
}
Now the code snippet which uses the above:
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
Note:
This particular project does not have any http calls in any of its services. Its a data processing project.
@SpringBootApplication has not been used. (All zipkin examples use it though). Is it necessary?