When configuring the camel-zipkin components via Spring DSL as indicated in the documented example:
<!-- configure how to reporter spans to a Zipkin collector (the dependency is io.zipkin.reporter2:zipkin-reporter-spring-beans) --> <bean id="http" class="zipkin2.reporter.beans.AsyncReporterFactoryBean"> <property name="sender"> <bean id="sender" class="zipkin2.reporter.beans.OkHttpSenderFactoryBean"> <property name="endpoint" value="http://localhost:9411/api/v2/spans"/> </bean> </property> <!-- wait up to half a second for any in-flight spans on close --> <property name="closeTimeout" value="500"/> </bean> <!-- setup zipkin tracer --> <bean id="zipkinTracer" class="org.apache.camel.zipkin.ZipkinTracer"> <property name="serviceName" value="dude"/> <property name="spanReporter" ref="http"/> </bean>
a NoSuchMethodError is encountered when trying to report the span to the configured server:
java.lang.NoSuchMethodError: zipkin.Span.traceIdString()Ljava/lang/String; at com.github.kristofa.brave.internal.V2SpanConverter.newBuilder(V2SpanConverter.java:309) at com.github.kristofa.brave.internal.V2SpanConverter$Builders.<init>(V2SpanConverter.java:48) at com.github.kristofa.brave.internal.V2SpanConverter.fromSpan(V2SpanConverter.java:34) at com.github.kristofa.brave.Recorder$Default.flush(Recorder.java:104) at com.github.kristofa.brave.Recorder$Default.finish(Recorder.java:86) at com.github.kristofa.brave.AnnotationSubmitter.submitEndAnnotation(AnnotationSubmitter.java:87) at com.github.kristofa.brave.ServerTracer.setServerSend(ServerTracer.java:217) at com.github.kristofa.brave.ServerResponseInterceptor.handle(ServerResponseInterceptor.java:35) at org.apache.camel.zipkin.ZipkinTracer.serverResponse(ZipkinTracer.java:676) at org.apache.camel.zipkin.ZipkinTracer.access$700(ZipkinTracer.java:103) at org.apache.camel.zipkin.ZipkinTracer$ZipkinRoutePolicy$1.onAfterRoute(ZipkinTracer.java:769) at org.apache.camel.util.UnitOfWorkHelper.afterRouteSynchronizations(UnitOfWorkHelper.java:154) at org.apache.camel.impl.DefaultUnitOfWork.afterRoute(DefaultUnitOfWork.java:287) at org.apache.camel.processor.CamelInternalProcessor$RouteLifecycleAdvice.after(CamelInternalProcessor.java:322) at org.apache.camel.processor.CamelInternalProcessor$InternalCallback.done(CamelInternalProcessor.java:251) at org.apache.camel.processor.Pipeline.process(Pipeline.java:127) at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201) at org.apache.camel.component.jetty.CamelContinuationServlet.doService(CamelContinuationServlet.java:205) at org.apache.camel.http.common.CamelServlet.service(CamelServlet.java:78) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1655) at org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:150) at org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:43) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1642) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:533) at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1253) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473) at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1155) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:531) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678) at java.lang.Thread.run(Thread.java:748)
This appears to be due to the inclusion of the older io.zipkin.java/zipkin1.19.2 dependency, which does not have a method signature matching the one requested by the brave V2SpanConverter.
Exclusion of the 1.19.2 dependency and explicit inclusion of a later version (Iused 2.4.5) seems to resolve the issue and spans are correctly reported.