You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/04/05 08:21:23 UTC
camel git commit: Remove dependency on OpenTracing contrib
GlobalTracer, as this is being relocated in the near future,
and is not essential for camel-opentracing. Also enable a Spring app to
provider a Tracer bean.
Repository: camel
Updated Branches:
refs/heads/master 1c60448ec -> 18ff4f536
Remove dependency on OpenTracing contrib GlobalTracer, as this is being relocated in the near future, and is not essential for camel-opentracing. Also enable a Spring app to provider a Tracer bean.
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/18ff4f53
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/18ff4f53
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/18ff4f53
Branch: refs/heads/master
Commit: 18ff4f53644bd9ca7b76fa3fdbba2ffb2457f5ff
Parents: 1c60448
Author: Gary Brown <ga...@brownuk.com>
Authored: Tue Apr 4 15:51:42 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Apr 5 10:18:04 2017 +0200
----------------------------------------------------------------------
components/camel-opentracing/pom.xml | 5 -----
.../src/main/docs/opentracing.adoc | 8 ++++++--
.../camel/opentracing/OpenTracingTracer.java | 18 +++++++++++++++---
.../agent/InstallOpenTracingTracerRuleTest.java | 18 +++++++++++-------
parent/pom.xml | 1 -
.../starter/OpenTracingAutoConfiguration.java | 9 +++++++++
6 files changed, 41 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/18ff4f53/components/camel-opentracing/pom.xml
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/pom.xml b/components/camel-opentracing/pom.xml
index 77c26f9..d296c02 100644
--- a/components/camel-opentracing/pom.xml
+++ b/components/camel-opentracing/pom.xml
@@ -57,11 +57,6 @@
</dependency>
<dependency>
<groupId>io.opentracing.contrib</groupId>
- <artifactId>opentracing-globaltracer</artifactId>
- <version>${opentracing-java-globaltracer-version}</version>
- </dependency>
- <dependency>
- <groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spanmanager</artifactId>
<version>${opentracing-java-spanmanager-version}</version>
</dependency>
http://git-wip-us.apache.org/repos/asf/camel/blob/18ff4f53/components/camel-opentracing/src/main/docs/opentracing.adoc
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/docs/opentracing.adoc b/components/camel-opentracing/src/main/docs/opentracing.adoc
index adea4de..6b56989 100644
--- a/components/camel-opentracing/src/main/docs/opentracing.adoc
+++ b/components/camel-opentracing/src/main/docs/opentracing.adoc
@@ -24,7 +24,7 @@ Include the `camel-opentracing` component in your POM, along with any specific d
To explicitly configure OpenTracing support, instantiate the `OpenTracingTracer` and initialize the camel
context. You can optionally specify a `Tracer`, or alternatively it can be implicitly discovered using the
-`GlobalTracer`.
+`Registry` or `ServiceLoader`.
[source,java]
--------------------------------------------------------------------------------------------------
@@ -52,6 +52,9 @@ If you are using�link:spring-boot.html[Spring Boot] then you can add
the�`camel-opentracing-starter` dependency, and turn on OpenTracing by annotating
the main class with `@CamelOpenTracing`.
+The `Tracer` will be implicitly obtained from the camel context's `Registry`, or the `ServiceLoader`, unless
+a `Tracer` bean has been defined by the application.
+
#### Java Agent
The third approach is to use a Java Agent to automatically configure the OpenTracing support.
@@ -68,8 +71,9 @@ The OpenTracing Java Agent is associated with the following dependency:
</dependency>
---------------------------------------------------------------------------------------------------------
-How this agent is used will be specific to how you execute your application. _Service2_ in the https://github.com/apache/camel/tree/master/examples/camel-example-opentracing[camel-example-opentracing] downloads the agent into a local folder and then uses the `exec-maven-plugin` to launch the service with the `-javaagent` command line option.
+The `Tracer` used will be implicitly loaded from the camel context `Registry` or using the `ServiceLoader`.
+How this agent is used will be specific to how you execute your application. _Service2_ in the https://github.com/apache/camel/tree/master/examples/camel-example-opentracing[camel-example-opentracing] downloads the agent into a local folder and then uses the `exec-maven-plugin` to launch the service with the `-javaagent` command line option.
### Example
http://git-wip-us.apache.org/repos/asf/camel/blob/18ff4f53/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
index d2f3b28..de95244 100644
--- a/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
+++ b/components/camel-opentracing/src/main/java/org/apache/camel/opentracing/OpenTracingTracer.java
@@ -19,14 +19,15 @@ package org.apache.camel.opentracing;
import java.net.URI;
import java.util.EventObject;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.Set;
+import io.opentracing.NoopTracerFactory;
import io.opentracing.Span;
import io.opentracing.Tracer;
import io.opentracing.Tracer.SpanBuilder;
-import io.opentracing.contrib.global.GlobalTracer;
import io.opentracing.contrib.spanmanager.SpanManager;
import io.opentracing.propagation.Format;
import io.opentracing.tag.Tags;
@@ -151,8 +152,19 @@ public class OpenTracingTracer extends ServiceSupport implements RoutePolicyFact
}
if (tracer == null) {
- // fallback to the global tracer if no tracers are configured
- tracer = GlobalTracer.get();
+ // Attempt to load tracer using ServiceLoader
+ Iterator<Tracer> iter = ServiceLoader.load(Tracer.class).iterator();
+ if (iter.hasNext()) {
+ tracer = iter.next();
+ if (iter.hasNext()) {
+ LOG.warn("Multiple Tracer implementations available - selected: " + tracer);
+ }
+ }
+ }
+
+ if (tracer == null) {
+ // No tracer is available, so setup NoopTracer
+ tracer = NoopTracerFactory.create();
}
ServiceHelper.startServices(eventNotifier);
http://git-wip-us.apache.org/repos/asf/camel/blob/18ff4f53/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/agent/InstallOpenTracingTracerRuleTest.java
----------------------------------------------------------------------
diff --git a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/agent/InstallOpenTracingTracerRuleTest.java b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/agent/InstallOpenTracingTracerRuleTest.java
index 5dd50c1..bd1a8c1 100644
--- a/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/agent/InstallOpenTracingTracerRuleTest.java
+++ b/components/camel-opentracing/src/test/java/org/apache/camel/opentracing/agent/InstallOpenTracingTracerRuleTest.java
@@ -18,7 +18,6 @@ package org.apache.camel.opentracing.agent;
import java.util.List;
-import io.opentracing.contrib.global.GlobalTracer;
import io.opentracing.mock.MockSpan;
import io.opentracing.mock.MockTracer;
import io.opentracing.mock.MockTracer.Propagator;
@@ -29,9 +28,9 @@ import org.apache.camel.Produce;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.JndiRegistry;
import org.apache.camel.test.junit4.CamelTestSupport;
import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
public class InstallOpenTracingTracerRuleTest extends CamelTestSupport {
@@ -44,11 +43,6 @@ public class InstallOpenTracingTracerRuleTest extends CamelTestSupport {
@Produce(uri = "direct:start")
protected ProducerTemplate template;
- @BeforeClass
- public static void initClass() throws Exception {
- GlobalTracer.register(tracer);
- }
-
@Before
public void init() {
tracer.reset();
@@ -59,6 +53,16 @@ public class InstallOpenTracingTracerRuleTest extends CamelTestSupport {
}
@Override
+ protected JndiRegistry createRegistry() throws Exception {
+ JndiRegistry registry = super.createRegistry();
+
+ // Add the mock tracer to the registry
+ registry.bind("tracer", tracer);
+
+ return registry;
+ }
+
+ @Override
public boolean isDumpRouteCoverage() {
return true;
}
http://git-wip-us.apache.org/repos/asf/camel/blob/18ff4f53/parent/pom.xml
----------------------------------------------------------------------
diff --git a/parent/pom.xml b/parent/pom.xml
index 602714c..729c0bc 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -496,7 +496,6 @@
<openstack4j-version>3.0.2</openstack4j-version>
<openstack4j-guava-version>17.0</openstack4j-guava-version>
<opentracing-java-agent-version>0.0.10</opentracing-java-agent-version>
- <opentracing-java-globaltracer-version>0.1.0</opentracing-java-globaltracer-version>
<opentracing-java-spanmanager-version>0.0.3</opentracing-java-spanmanager-version>
<opentracing-version>0.20.10</opentracing-version>
<ops4j-base-version>1.5.0</ops4j-base-version>
http://git-wip-us.apache.org/repos/asf/camel/blob/18ff4f53/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java b/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java
index 71aa36c..ec25984 100644
--- a/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java
+++ b/platforms/spring-boot/components-starter/camel-opentracing-starter/src/main/java/org/apache/camel/opentracing/starter/OpenTracingAutoConfiguration.java
@@ -16,8 +16,11 @@
*/
package org.apache.camel.opentracing.starter;
+import io.opentracing.Tracer;
+
import org.apache.camel.CamelContext;
import org.apache.camel.opentracing.OpenTracingTracer;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -29,12 +32,18 @@ import org.springframework.context.annotation.Configuration;
@ConditionalOnProperty(value = "camel.opentracing.enabled", matchIfMissing = true)
public class OpenTracingAutoConfiguration {
+ @Autowired(required = false)
+ private Tracer tracer;
+
@Bean(initMethod = "", destroyMethod = "")
// Camel handles the lifecycle of this bean
@ConditionalOnMissingBean(OpenTracingTracer.class)
OpenTracingTracer openTracingEventNotifier(CamelContext camelContext,
OpenTracingConfigurationProperties config) {
OpenTracingTracer ottracer = new OpenTracingTracer();
+ if (tracer != null) {
+ ottracer.setTracer(tracer);
+ }
ottracer.init(camelContext);
return ottracer;