You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2018/06/17 17:31:11 UTC

[camel] 01/02: Updates to latest zipkin, eliminating SpanCollector dependency

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 05b49093e416587cac6d6b5d4fe84bf6a118a486
Author: Adrian Cole <ac...@pivotal.io>
AuthorDate: Wed Jun 13 16:27:54 2018 +0800

    Updates to latest zipkin, eliminating SpanCollector dependency
    
    This reduces the effort of renovating the zipkin component by reducing
    the apis used to send data to Zipkin.
---
 components/camel-zipkin/pom.xml                    | 14 +++---
 .../camel/zipkin/ZipkinLoggingSpanCollector.java   | 58 ----------------------
 .../java/org/apache/camel/zipkin/ZipkinTracer.java | 46 ++++-------------
 .../camel/zipkin/scribe/ZipkinABCRouteScribe.java  | 16 ++++--
 .../zipkin/scribe/ZipkinMulticastRouteScribe.java  | 16 ++++--
 .../scribe/ZipkinOneRouteFallbackScribe.java       | 16 ++++--
 .../camel/zipkin/scribe/ZipkinOneRouteScribe.java  | 16 ++++--
 .../zipkin/scribe/ZipkinSimpleRouteScribe.java     | 17 +++++--
 .../zipkin/scribe/ZipkinTimerRouteScribe.java      | 17 +++++--
 .../camel/zipkin/scribe/ZipkinTwoRouteScribe.java  | 17 +++++--
 .../camel/zipkin/SpringZipkinSimpleRouteTest.xml   |  6 +--
 parent/pom.xml                                     |  4 +-
 .../karaf/features/src/main/resources/features.xml |  4 +-
 .../camel-zipkin-starter/pom.xml                   |  8 +++
 14 files changed, 126 insertions(+), 129 deletions(-)

diff --git a/components/camel-zipkin/pom.xml b/components/camel-zipkin/pom.xml
index 3181be3..0177737 100644
--- a/components/camel-zipkin/pom.xml
+++ b/components/camel-zipkin/pom.xml
@@ -48,21 +48,22 @@
       <artifactId>camel-core</artifactId>
     </dependency>
 
-    <!-- brave/zipkin -->
+    <!-- to send to zipkin server -->
     <dependency>
-      <groupId>io.zipkin.brave</groupId>
-      <artifactId>brave-core</artifactId>
-      <version>${brave-zipkin-version}</version>
+      <groupId>io.zipkin.reporter2</groupId>
+      <artifactId>zipkin-sender-libthrift</artifactId>
+      <version>${zipkin-reporter-version}</version>
     </dependency>
-    <!-- to send to zipkin server -->
     <dependency>
       <groupId>io.zipkin.reporter2</groupId>
       <artifactId>zipkin-sender-urlconnection</artifactId>
       <version>${zipkin-reporter-version}</version>
     </dependency>
+
+    <!-- brave/zipkin -->
     <dependency>
       <groupId>io.zipkin.brave</groupId>
-      <artifactId>brave-spancollector-scribe</artifactId>
+      <artifactId>brave-core</artifactId>
       <version>${brave-zipkin-version}</version>
     </dependency>
 
@@ -87,7 +88,6 @@
       <artifactId>log4j-slf4j-impl</artifactId>
       <scope>test</scope>
     </dependency>
-
   </dependencies>
 
   <build>
diff --git a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinLoggingSpanCollector.java b/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinLoggingSpanCollector.java
deleted file mode 100644
index 1299530..0000000
--- a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinLoggingSpanCollector.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.zipkin;
-
-import com.github.kristofa.brave.SpanCollector;
-import com.twitter.zipkin.gen.Span;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * To collect zipkin span's using a logger.
- */
-public class ZipkinLoggingSpanCollector implements SpanCollector {
-
-    private final String name;
-    private final Logger logger;
-
-    public ZipkinLoggingSpanCollector() {
-        this(ZipkinLoggingSpanCollector.class.getName());
-    }
-
-    public ZipkinLoggingSpanCollector(String name) {
-        this.name = name;
-        this.logger = LoggerFactory.getLogger(name);
-    }
-
-    @Override
-    public void collect(Span span) {
-        if (logger.isTraceEnabled()) {
-            String name = span.getName();
-            String traceId = "" + span.getTrace_id();
-            String spanId = "" + span.getId();
-            String parentId = "" + span.getParent_id();
-            long ms = span.getDuration() != null ? span.getDuration() / 1000 : -1;
-            logger.info("Zipkin[name={}, traceId={}, spanId={}, parentId={}, duration={} ms]", name, traceId, spanId, parentId, ms);
-        }
-    }
-
-    @Override
-    public void addDefaultAnnotation(String key, String value) {
-        // noop
-    }
-
-}
diff --git a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java b/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java
index fa6d8d2..5d3f658 100644
--- a/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java
+++ b/components/camel-zipkin/src/main/java/org/apache/camel/zipkin/ZipkinTracer.java
@@ -27,8 +27,6 @@ import com.github.kristofa.brave.Brave;
 import com.github.kristofa.brave.ClientSpanThreadBinder;
 import com.github.kristofa.brave.ServerSpan;
 import com.github.kristofa.brave.ServerSpanThreadBinder;
-import com.github.kristofa.brave.SpanCollector;
-import com.github.kristofa.brave.scribe.ScribeSpanCollector;
 import com.twitter.zipkin.gen.Span;
 import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
@@ -60,6 +58,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import zipkin2.reporter.AsyncReporter;
 import zipkin2.reporter.Reporter;
+import zipkin2.reporter.libthrift.LibthriftSender;
 import zipkin2.reporter.urlconnection.URLConnectionSender;
 
 import static org.apache.camel.builder.ExpressionBuilder.routeIdExpression;
@@ -114,7 +113,6 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
     private String hostName;
     private int port;
     private float rate = 1.0f;
-    private SpanCollector spanCollector;
     private Reporter<zipkin2.Span> spanReporter;
     private Map<String, String> clientServiceMappings = new HashMap<>();
     private Map<String, String> serverServiceMappings = new HashMap<>();
@@ -206,16 +204,6 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
         this.rate = rate;
     }
 
-    /**
-     * Returns the legacy span collector or null if using the reporter
-     *
-     * @deprecated use {@link #getSpanReporter()}
-     */
-    @Deprecated
-    public SpanCollector getSpanCollector() {
-        return spanCollector;
-    }
-
     /** Sets the reporter used to send timing data (spans) to the zipkin server. */
     public void setSpanReporter(Reporter<zipkin2.Span> spanReporter) {
         this.spanReporter = spanReporter;
@@ -226,12 +214,6 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
         return spanReporter;
     }
 
-    /** @deprecated use {@link #setSpanReporter(Reporter)} */
-    @Deprecated
-    public void setSpanCollector(SpanCollector spanCollector) {
-        this.spanCollector = spanCollector;
-    }
-
     public String getServiceName() {
         return clientServiceMappings.get("*");
     }
@@ -346,13 +328,13 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
         }
 
         if (spanReporter == null) {
-            if (spanCollector != null) { // possible via setter
-            } else if (endpoint != null) {
+            if (endpoint != null) {
                 LOG.info("Configuring Zipkin URLConnectionSender using endpoint: {} ", endpoint);
                 spanReporter = AsyncReporter.create(URLConnectionSender.create(endpoint));
             } else if (hostName != null && port > 0) {
                 LOG.info("Configuring Zipkin ScribeSpanCollector using host: {} and port: {}", hostName, port);
-                spanCollector = new ScribeSpanCollector(hostName, port);
+                LibthriftSender sender = LibthriftSender.newBuilder().host(hostName).port(port).build();
+                spanReporter = AsyncReporter.create(sender);
             } else {
                 // is there a zipkin service setup as ENV variable to auto register a span reporter
                 String host = new ServiceHostPropertiesFunction().apply(ZIPKIN_COLLECTOR_HTTP_SERVICE);
@@ -368,13 +350,14 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
                     if (ObjectHelper.isNotEmpty(host) && ObjectHelper.isNotEmpty(port)) {
                         LOG.info("Auto-configuring Zipkin ScribeSpanCollector using host: {} and port: {}", host, port);
                         int num = camelContext.getTypeConverter().mandatoryConvertTo(Integer.class, port);
-                        spanCollector = new ScribeSpanCollector(host, num);
+                        LibthriftSender sender = LibthriftSender.newBuilder().host(host).port(num).build();
+                        spanReporter = AsyncReporter.create(sender);
                     }
                 }
             }
         }
 
-        if (spanReporter == null && spanCollector == null) {
+        if (spanReporter == null) {
             // Try to lookup the span reporter from the registry if only one instance is present
             Set<Reporter> reporters = camelContext.getRegistry().findByType(Reporter.class);
             if (reporters.size() == 1) {
@@ -382,9 +365,7 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
             }
         }
 
-        if (spanCollector == null) {
-            ObjectHelper.notNull(spanReporter, "Reporter<zipkin2.Span>", this);
-        }
+        ObjectHelper.notNull(spanReporter, "Reporter<zipkin2.Span>", this);
 
         if (clientServiceMappings.isEmpty() && serverServiceMappings.isEmpty()) {
             LOG.warn("No service name(s) has been mapped in clientServiceMappings or serverServiceMappings. Camel will fallback and use endpoint uris as service names.");
@@ -529,14 +510,9 @@ public class ZipkinTracer extends ServiceSupport implements RoutePolicyFactory,
     }
 
     private Brave newBrave(String serviceName) {
-        Brave.Builder builder = new Brave.Builder(serviceName)
-            .traceSampler(com.github.kristofa.brave.Sampler.create(rate));
-        if (spanReporter != null) {
-            builder = builder.spanReporter(spanReporter);
-        } else if (spanCollector != null) {
-            builder.spanCollector(spanCollector);
-        }
-        return builder.build();
+        return new Brave.Builder(serviceName)
+            .traceSampler(com.github.kristofa.brave.Sampler.create(rate))
+            .spanReporter(spanReporter).build();
     }
 
     private Brave getBrave(String serviceName) {
diff --git a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinABCRouteScribe.java b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinABCRouteScribe.java
index 913a58e..e404641 100644
--- a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinABCRouteScribe.java
+++ b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinABCRouteScribe.java
@@ -16,9 +16,10 @@
  */
 package org.apache.camel.zipkin.scribe;
 
-import com.github.kristofa.brave.scribe.ScribeSpanCollector;
 import org.apache.camel.zipkin.ZipkinABCRouteTest;
 import org.apache.camel.zipkin.ZipkinTracer;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.libthrift.LibthriftSender;
 
 /**
  * Integration test requires running Zipkin/Scribe running
@@ -26,11 +27,20 @@ import org.apache.camel.zipkin.ZipkinTracer;
  * <p>The easiest way to run is locally:
  * <pre>{@code
  * curl -sSL https://zipkin.io/quickstart.sh | bash -s
- * SCRIBE_ENABLED=true java -jar zipkin.jar
+ * curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.java:zipkin-autoconfigure-collector-scribe:LATEST:module scribe.jar
+ * SCRIBE_ENABLED=true \
+ *     java \
+ *     -Dloader.path='scribe.jar,scribe.jar!/lib' \
+ *     -Dspring.profiles.active=scribe \
+ *     -cp zipkin.jar \
+ *     org.springframework.boot.loader.PropertiesLauncher
  * }</pre>
+ *
+ * <p>Note: the scribe transport is deprecated. Most use out-of-box defaults, such as Http, RabbitMQ
+ * or Kafka.
  */
 public class ZipkinABCRouteScribe extends ZipkinABCRouteTest {
     @Override protected void setSpanReporter(ZipkinTracer zipkin) {
-        zipkin.setSpanCollector(new ScribeSpanCollector("127.0.0.1", 9410));
+        zipkin.setSpanReporter(AsyncReporter.create(LibthriftSender.create("127.0.0.1")));
     }
 }
diff --git a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinMulticastRouteScribe.java b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinMulticastRouteScribe.java
index 14e200e..8845185 100644
--- a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinMulticastRouteScribe.java
+++ b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinMulticastRouteScribe.java
@@ -16,9 +16,10 @@
  */
 package org.apache.camel.zipkin.scribe;
 
-import com.github.kristofa.brave.scribe.ScribeSpanCollector;
 import org.apache.camel.zipkin.ZipkinMulticastRouteTest;
 import org.apache.camel.zipkin.ZipkinTracer;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.libthrift.LibthriftSender;
 
 /**
  * Integration test requires running Zipkin/Scribe running
@@ -26,11 +27,20 @@ import org.apache.camel.zipkin.ZipkinTracer;
  * <p>The easiest way to run is locally:
  * <pre>{@code
  * curl -sSL https://zipkin.io/quickstart.sh | bash -s
- * SCRIBE_ENABLED=true java -jar zipkin.jar
+ * curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.java:zipkin-autoconfigure-collector-scribe:LATEST:module scribe.jar
+ * SCRIBE_ENABLED=true \
+ *     java \
+ *     -Dloader.path='scribe.jar,scribe.jar!/lib' \
+ *     -Dspring.profiles.active=scribe \
+ *     -cp zipkin.jar \
+ *     org.springframework.boot.loader.PropertiesLauncher
  * }</pre>
+ *
+ * <p>Note: the scribe transport is deprecated. Most use out-of-box defaults, such as Http, RabbitMQ
+ * or Kafka.
  */
 public class ZipkinMulticastRouteScribe extends ZipkinMulticastRouteTest {
     @Override protected void setSpanReporter(ZipkinTracer zipkin) {
-        zipkin.setSpanCollector(new ScribeSpanCollector("127.0.0.1", 9410));
+        zipkin.setSpanReporter(AsyncReporter.create(LibthriftSender.create("127.0.0.1")));
     }
 }
diff --git a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinOneRouteFallbackScribe.java b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinOneRouteFallbackScribe.java
index d389e26..454ba7c 100644
--- a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinOneRouteFallbackScribe.java
+++ b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinOneRouteFallbackScribe.java
@@ -16,9 +16,10 @@
  */
 package org.apache.camel.zipkin.scribe;
 
-import com.github.kristofa.brave.scribe.ScribeSpanCollector;
 import org.apache.camel.zipkin.ZipkinOneRouteFallbackTest;
 import org.apache.camel.zipkin.ZipkinTracer;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.libthrift.LibthriftSender;
 
 /**
  * Integration test requires running Zipkin/Scribe running
@@ -26,11 +27,20 @@ import org.apache.camel.zipkin.ZipkinTracer;
  * <p>The easiest way to run is locally:
  * <pre>{@code
  * curl -sSL https://zipkin.io/quickstart.sh | bash -s
- * SCRIBE_ENABLED=true java -jar zipkin.jar
+ * curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.java:zipkin-autoconfigure-collector-scribe:LATEST:module scribe.jar
+ * SCRIBE_ENABLED=true \
+ *     java \
+ *     -Dloader.path='scribe.jar,scribe.jar!/lib' \
+ *     -Dspring.profiles.active=scribe \
+ *     -cp zipkin.jar \
+ *     org.springframework.boot.loader.PropertiesLauncher
  * }</pre>
+ *
+ * <p>Note: the scribe transport is deprecated. Most use out-of-box defaults, such as Http, RabbitMQ
+ * or Kafka.
  */
 public class ZipkinOneRouteFallbackScribe extends ZipkinOneRouteFallbackTest {
     @Override protected void setSpanReporter(ZipkinTracer zipkin) {
-        zipkin.setSpanCollector(new ScribeSpanCollector("127.0.0.1", 9410));
+        zipkin.setSpanReporter(AsyncReporter.create(LibthriftSender.create("127.0.0.1")));
     }
 }
diff --git a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinOneRouteScribe.java b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinOneRouteScribe.java
index 2ef1001..ca9f157 100644
--- a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinOneRouteScribe.java
+++ b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinOneRouteScribe.java
@@ -16,9 +16,10 @@
  */
 package org.apache.camel.zipkin.scribe;
 
-import com.github.kristofa.brave.scribe.ScribeSpanCollector;
 import org.apache.camel.zipkin.ZipkinOneRouteTest;
 import org.apache.camel.zipkin.ZipkinTracer;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.libthrift.LibthriftSender;
 
 /**
  * Integration test requires running Zipkin/Scribe running
@@ -26,11 +27,20 @@ import org.apache.camel.zipkin.ZipkinTracer;
  * <p>The easiest way to run is locally:
  * <pre>{@code
  * curl -sSL https://zipkin.io/quickstart.sh | bash -s
- * SCRIBE_ENABLED=true java -jar zipkin.jar
+ * curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.java:zipkin-autoconfigure-collector-scribe:LATEST:module scribe.jar
+ * SCRIBE_ENABLED=true \
+ *     java \
+ *     -Dloader.path='scribe.jar,scribe.jar!/lib' \
+ *     -Dspring.profiles.active=scribe \
+ *     -cp zipkin.jar \
+ *     org.springframework.boot.loader.PropertiesLauncher
  * }</pre>
+ *
+ * <p>Note: the scribe transport is deprecated. Most use out-of-box defaults, such as Http, RabbitMQ
+ * or Kafka.
  */
 public class ZipkinOneRouteScribe extends ZipkinOneRouteTest {
     @Override protected void setSpanReporter(ZipkinTracer zipkin) {
-        zipkin.setSpanCollector(new ScribeSpanCollector("127.0.0.1", 9410));
+        zipkin.setSpanReporter(AsyncReporter.create(LibthriftSender.create("127.0.0.1")));
     }
 }
diff --git a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinSimpleRouteScribe.java b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinSimpleRouteScribe.java
index 2d5e557..4a153c3 100644
--- a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinSimpleRouteScribe.java
+++ b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinSimpleRouteScribe.java
@@ -16,21 +16,32 @@
  */
 package org.apache.camel.zipkin.scribe;
 
-import com.github.kristofa.brave.scribe.ScribeSpanCollector;
 import org.apache.camel.zipkin.ZipkinSimpleRouteTest;
 import org.apache.camel.zipkin.ZipkinTracer;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.libthrift.LibthriftSender;
 
 /**
  * Integration test requires running Zipkin/Scribe running
  *
  * <p>The easiest way to run is locally:
+ *
  * <pre>{@code
  * curl -sSL https://zipkin.io/quickstart.sh | bash -s
- * SCRIBE_ENABLED=true java -jar zipkin.jar
+ * curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.java:zipkin-autoconfigure-collector-scribe:LATEST:module scribe.jar
+ * SCRIBE_ENABLED=true \
+ *     java \
+ *     -Dloader.path='scribe.jar,scribe.jar!/lib' \
+ *     -Dspring.profiles.active=scribe \
+ *     -cp zipkin.jar \
+ *     org.springframework.boot.loader.PropertiesLauncher
  * }</pre>
+ *
+ * <p>Note: the scribe transport is deprecated. Most use out-of-box defaults, such as Http, RabbitMQ
+ * or Kafka.
  */
 public class ZipkinSimpleRouteScribe extends ZipkinSimpleRouteTest {
     @Override protected void setSpanReporter(ZipkinTracer zipkin) {
-        zipkin.setSpanCollector(new ScribeSpanCollector("127.0.0.1", 9410));
+        zipkin.setSpanReporter(AsyncReporter.create(LibthriftSender.create("127.0.0.1")));
     }
 }
diff --git a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinTimerRouteScribe.java b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinTimerRouteScribe.java
index 816735e..4fd583b 100644
--- a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinTimerRouteScribe.java
+++ b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinTimerRouteScribe.java
@@ -16,21 +16,32 @@
  */
 package org.apache.camel.zipkin.scribe;
 
-import com.github.kristofa.brave.scribe.ScribeSpanCollector;
 import org.apache.camel.zipkin.ZipkinTimerRouteTest;
 import org.apache.camel.zipkin.ZipkinTracer;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.libthrift.LibthriftSender;
 
 /**
  * Integration test requires running Zipkin/Scribe running
  *
  * <p>The easiest way to run is locally:
+ *
  * <pre>{@code
  * curl -sSL https://zipkin.io/quickstart.sh | bash -s
- * SCRIBE_ENABLED=true java -jar zipkin.jar
+ * curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.java:zipkin-autoconfigure-collector-scribe:LATEST:module scribe.jar
+ * SCRIBE_ENABLED=true \
+ *     java \
+ *     -Dloader.path='scribe.jar,scribe.jar!/lib' \
+ *     -Dspring.profiles.active=scribe \
+ *     -cp zipkin.jar \
+ *     org.springframework.boot.loader.PropertiesLauncher
  * }</pre>
+ *
+ * <p>Note: the scribe transport is deprecated. Most use out-of-box defaults, such as Http, RabbitMQ
+ * or Kafka.
  */
 public class ZipkinTimerRouteScribe extends ZipkinTimerRouteTest {
     @Override protected void setSpanReporter(ZipkinTracer zipkin) {
-        zipkin.setSpanCollector(new ScribeSpanCollector("127.0.0.1", 9410));
+        zipkin.setSpanReporter(AsyncReporter.create(LibthriftSender.create("127.0.0.1")));
     }
 }
diff --git a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinTwoRouteScribe.java b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinTwoRouteScribe.java
index bf6187e..14833fd 100644
--- a/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinTwoRouteScribe.java
+++ b/components/camel-zipkin/src/test/java/org/apache/camel/zipkin/scribe/ZipkinTwoRouteScribe.java
@@ -16,21 +16,32 @@
  */
 package org.apache.camel.zipkin.scribe;
 
-import com.github.kristofa.brave.scribe.ScribeSpanCollector;
 import org.apache.camel.zipkin.ZipkinTracer;
 import org.apache.camel.zipkin.ZipkinTwoRouteTest;
+import zipkin2.reporter.AsyncReporter;
+import zipkin2.reporter.libthrift.LibthriftSender;
 
 /**
  * Integration test requires running Zipkin/Scribe running
  *
  * <p>The easiest way to run is locally:
+ *
  * <pre>{@code
  * curl -sSL https://zipkin.io/quickstart.sh | bash -s
- * SCRIBE_ENABLED=true java -jar zipkin.jar
+ * curl -sSL https://zipkin.io/quickstart.sh | bash -s io.zipkin.java:zipkin-autoconfigure-collector-scribe:LATEST:module scribe.jar
+ * SCRIBE_ENABLED=true \
+ *     java \
+ *     -Dloader.path='scribe.jar,scribe.jar!/lib' \
+ *     -Dspring.profiles.active=scribe \
+ *     -cp zipkin.jar \
+ *     org.springframework.boot.loader.PropertiesLauncher
  * }</pre>
+ *
+ * <p>Note: the scribe transport is deprecated. Most use out-of-box defaults, such as Http, RabbitMQ
+ * or Kafka.
  */
 public class ZipkinTwoRouteScribe extends ZipkinTwoRouteTest {
     @Override protected void setSpanReporter(ZipkinTracer zipkin) {
-        zipkin.setSpanCollector(new ScribeSpanCollector("127.0.0.1", 9410));
+        zipkin.setSpanReporter(AsyncReporter.create(LibthriftSender.create("127.0.0.1")));
     }
 }
diff --git a/components/camel-zipkin/src/test/resources/org/apache/camel/zipkin/SpringZipkinSimpleRouteTest.xml b/components/camel-zipkin/src/test/resources/org/apache/camel/zipkin/SpringZipkinSimpleRouteTest.xml
index ebbffd7..7257e82 100644
--- a/components/camel-zipkin/src/test/resources/org/apache/camel/zipkin/SpringZipkinSimpleRouteTest.xml
+++ b/components/camel-zipkin/src/test/resources/org/apache/camel/zipkin/SpringZipkinSimpleRouteTest.xml
@@ -24,13 +24,13 @@
        http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
     ">
 
-  <!-- to use a logger as the collector (for testing) -->
-  <bean id="logSpanCollector" class="org.apache.camel.zipkin.ZipkinLoggingSpanCollector"/>
+  <!-- to use a logger as the span reporter (for testing) -->
+  <bean id="logSpanReporter" class="com.github.kristofa.brave.LoggingReporter"/>
 
   <!-- setup zipkin tracer -->
   <bean id="zipkinTracer" class="org.apache.camel.zipkin.ZipkinTracer">
     <property name="serviceName" value="dude"/>
-    <property name="spanCollector" ref="logSpanCollector"/>
+    <property name="spanReporter" ref="logSpanReporter"/>
   </bean>
 
   <camelContext xmlns="http://camel.apache.org/schema/spring">
diff --git a/parent/pom.xml b/parent/pom.xml
index 4537d98..2ad58fa 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -750,8 +750,8 @@
     <yammer-metrics-version>2.2.0</yammer-metrics-version>
     <zendesk-client-version>0.6.2</zendesk-client-version>
     <zipkin-libthrift-version>0.9.3</zipkin-libthrift-version>
-    <zipkin-reporter-version>2.3.1</zipkin-reporter-version>
-    <zipkin-version>2.4.5</zipkin-version>
+    <zipkin-reporter-version>2.7.3</zipkin-reporter-version>
+    <zipkin-version>2.9.3</zipkin-version>
     <zjsonpatch-version>0.3.0</zjsonpatch-version>
     <zookeeper-version>3.4.10</zookeeper-version>
     <zookeeper-guava-version>16.0</zookeeper-guava-version>
diff --git a/platforms/karaf/features/src/main/resources/features.xml b/platforms/karaf/features/src/main/resources/features.xml
index 6f5f31f..c932b7e 100644
--- a/platforms/karaf/features/src/main/resources/features.xml
+++ b/platforms/karaf/features/src/main/resources/features.xml
@@ -2483,12 +2483,10 @@
   <feature name='camel-zipkin' version='${project.version}' resolver='(obr)' start-level='50'>
     <feature version='${project.version}'>camel-core</feature>
     <bundle dependency='true'>mvn:io.zipkin.brave/brave-core/${brave-zipkin-version}</bundle>
-    <bundle dependency='true'>mvn:io.zipkin.brave/brave-spancollector-scribe/${brave-zipkin-version}</bundle>
-    <!-- io.zipkin.brave/brave-core depends on both versions of zipkin, io.zipkin.brave/brave does not -->
-    <bundle dependency='true'>mvn:io.zipkin.java/zipkin/${zipkin-version}</bundle>
     <bundle dependency='true'>mvn:io.zipkin.zipkin2/zipkin/${zipkin-version}</bundle>
     <bundle dependency='true'>mvn:io.zipkin.reporter2/zipkin-reporter/${zipkin-reporter-version}</bundle>
     <bundle dependency='true'>mvn:io.zipkin.reporter2/zipkin-sender-urlconnection/${zipkin-reporter-version}</bundle>
+    <bundle dependency='true'>mvn:io.zipkin.reporter2/zipkin-sender-libthrift/${zipkin-reporter-version}</bundle>
     <bundle dependency='true'>mvn:org.apache.thrift/libthrift/${zipkin-libthrift-version}</bundle>
     <bundle>mvn:org.apache.camel/camel-zipkin/${project.version}</bundle>
   </feature>
diff --git a/platforms/spring-boot/components-starter/camel-zipkin-starter/pom.xml b/platforms/spring-boot/components-starter/camel-zipkin-starter/pom.xml
index 5df742c..c36a565 100644
--- a/platforms/spring-boot/components-starter/camel-zipkin-starter/pom.xml
+++ b/platforms/spring-boot/components-starter/camel-zipkin-starter/pom.xml
@@ -38,6 +38,14 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-zipkin</artifactId>
       <version>${project.version}</version>
+      <!--START OF GENERATED CODE-->
+      <exclusions>
+        <exclusion>
+          <groupId>commons-logging</groupId>
+          <artifactId>commons-logging</artifactId>
+        </exclusion>
+      </exclusions>
+      <!--END OF GENERATED CODE-->
     </dependency>
     <!--START OF GENERATED CODE-->
     <dependency>

-- 
To stop receiving notification emails like this one, please contact
acosentino@apache.org.