From bf6c54330c4b0969a21e002ea6cf76b0728b6996 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Fri, 20 Oct 2017 16:37:48 +0300 Subject: [PATCH 1/2] Removes explicit zipkin2 exclusions --- spring-cloud-sleuth-zipkin-stream/pom.xml | 6 ------ spring-cloud-sleuth-zipkin/pom.xml | 6 ------ 2 files changed, 12 deletions(-) diff --git a/spring-cloud-sleuth-zipkin-stream/pom.xml b/spring-cloud-sleuth-zipkin-stream/pom.xml index 84e73f208..86df93730 100644 --- a/spring-cloud-sleuth-zipkin-stream/pom.xml +++ b/spring-cloud-sleuth-zipkin-stream/pom.xml @@ -60,12 +60,6 @@ io.zipkin.java zipkin-server - - - io.zipkin.java - zipkin - - io.zipkin.java diff --git a/spring-cloud-sleuth-zipkin/pom.xml b/spring-cloud-sleuth-zipkin/pom.xml index 66b4a0fb7..dd5e7561c 100644 --- a/spring-cloud-sleuth-zipkin/pom.xml +++ b/spring-cloud-sleuth-zipkin/pom.xml @@ -72,12 +72,6 @@ io.zipkin.reporter zipkin-reporter - - - io.zipkin.zipkin2 - zipkin - - org.springframework From 808572d78e12a923101a6661a5e00af6749cb6f9 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Sun, 22 Oct 2017 19:29:22 +0300 Subject: [PATCH 2/2] Deprecates all span transports except spring-cloud-sleuth-zipkin2 (#758) This deprecates span transports in favor of `spring-cloud-sleuth-zipkin2` which: * Supports RabbitMQ and Kafka automatically when adding spring-rabbit or spring-kafka deps * Supports any io.zipkin.reporter2:zipkin-reporter sender, including Amazon X-Ray * Defaults to zipkin v2 format, but can be configured to use zipkin v1 format as needed This lowers the amount of maintenance on the project, as discussed in various issues See #727 See #711 --- docs/src/main/asciidoc/features.adoc | 12 +- docs/src/main/asciidoc/intro.adoc | 118 ++++------------- spring-cloud-sleuth-samples/README.adoc | 21 +-- spring-cloud-sleuth-samples/pom.xml | 2 - .../spring-cloud-sleuth-sample-stream/pom.xml | 94 ------------- .../main/java/sample/SampleBackground.java | 43 ------ .../main/java/sample/SampleController.java | 124 ------------------ .../java/sample/SampleSleuthApplication.java | 48 ------- .../src/main/resources/application.yml | 9 -- .../sample/SampleSleuthApplicationTests.java | 18 --- .../README.md | 46 ------- .../docker-compose.yml | 7 - .../pom.xml | 107 --------------- .../ZipkinStreamServerApplication.java | 15 --- .../src/main/resources/application.yml | 25 ---- .../example/ZipkinServerApplicationTests.java | 30 ----- .../java/integration/ZipkinStreamTests.java | 95 -------------- .../src/test/resources/application-test.yml | 3 - .../src/test/resources/drop.sql | 5 - .../src/test/resources/logback.xml | 9 -- .../cloud/sleuth/stream/HostLocator.java | 2 + .../cloud/sleuth/stream/SleuthSink.java | 2 + .../cloud/sleuth/stream/SleuthSource.java | 2 + .../cloud/sleuth/zipkin/EndpointLocator.java | 2 + .../sleuth/zipkin/ZipkinLoadBalancer.java | 2 + .../zipkin/ZipkinRestTemplateCustomizer.java | 2 + .../sleuth/zipkin/ZipkinSpanReporter.java | 2 + 27 files changed, 44 insertions(+), 801 deletions(-) delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleBackground.java delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleController.java delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/resources/application.yml delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/test/java/sample/SampleSleuthApplicationTests.java delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/README.md delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/docker-compose.yml delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/java/example/ZipkinStreamServerApplication.java delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/resources/application.yml delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/java/example/ZipkinServerApplicationTests.java delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/java/integration/ZipkinStreamTests.java delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/application-test.yml delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/drop.sql delete mode 100644 spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/logback.xml diff --git a/docs/src/main/asciidoc/features.adoc b/docs/src/main/asciidoc/features.adoc index 2bf7d0027..11b70bbc7 100644 --- a/docs/src/main/asciidoc/features.adoc +++ b/docs/src/main/asciidoc/features.adoc @@ -41,19 +41,17 @@ a baggage element then it will be sent downstream either via HTTP or messaging t * Provides simple metrics of accepted / dropped spans. -* If `spring-cloud-sleuth-zipkin` then the app will generate and collect Zipkin-compatible traces. +* If `spring-cloud-sleuth-zipkin2` then the app will generate and collect Zipkin-compatible traces. By default it sends them via HTTP to a Zipkin server on localhost (port 9411). Configure the location of the service using `spring.zipkin.baseUrl`. + - If you depend on `spring-rabbit` or `spring-kafka` your app will send traces to a broker instead of http. + - Note: `spring-cloud-sleuth-stream` is deprecated and should no longer be used. -* If `spring-cloud-sleuth-stream` then the app will generate and collect traces via https://github.com/spring-cloud/spring-cloud-stream[Spring Cloud Stream]. -Your app automatically becomes a producer of tracer messages that are sent over your broker of choice -(e.g. RabbitMQ, Apache Kafka, Redis). - -IMPORTANT: If using Zipkin or Stream, configure the percentage of spans exported using `spring.sleuth.sampler.percentage` +IMPORTANT: If using Zipkin, configure the percentage of spans exported using `spring.sleuth.sampler.percentage` (default 0.1, i.e. 10%). *Otherwise you might think that Sleuth is not working cause it's omitting some spans.* NOTE: the SLF4J MDC is always set and logback users will immediately see the trace and span ids in logs per the example above. Other logging systems have to configure their own formatter to get the same result. The default is `logging.pattern.level` set to `%5p [${spring.zipkin.service.name:${spring.application.name:-}},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]` (this is a Spring Boot feature for logback users). - *This means that if you're not using SLF4J this pattern WILL NOT be automatically applied*. \ No newline at end of file + *This means that if you're not using SLF4J this pattern WILL NOT be automatically applied*. diff --git a/docs/src/main/asciidoc/intro.adoc b/docs/src/main/asciidoc/intro.adoc index 609c63765..05c99a412 100644 --- a/docs/src/main/asciidoc/intro.adoc +++ b/docs/src/main/asciidoc/intro.adoc @@ -280,7 +280,7 @@ the Spring BOM ==== Sleuth with Zipkin via HTTP -If you want both Sleuth and Zipkin just add the `spring-cloud-starter-zipkin` dependency. +If you want both Sleuth and Zipkin just add the `spring-cloud-starter-zipkin2` dependency. [source,xml,indent=0,subs="verbatim,attributes",role="primary"] .Maven @@ -299,12 +299,12 @@ If you want both Sleuth and Zipkin just add the `spring-cloud-starter-zipkin` de <2> org.springframework.cloud - spring-cloud-starter-zipkin + spring-cloud-starter-zipkin2 ---- <1> In order not to pick versions by yourself it's much better if you add the dependency management via the Spring BOM -<2> Add the dependency to `spring-cloud-starter-zipkin` +<2> Add the dependency to `spring-cloud-starter-zipkin2` [source,groovy,indent=0,subs="verbatim,attributes",role="secondary"] .Gradle @@ -316,16 +316,22 @@ dependencyManagement { <1> } dependencies { <2> - compile "org.springframework.cloud:spring-cloud-starter-zipkin" + compile "org.springframework.cloud:spring-cloud-starter-zipkin2" } ---- <1> In order not to pick versions by yourself it's much better if you add the dependency management via the Spring BOM -<2> Add the dependency to `spring-cloud-starter-zipkin` +<2> Add the dependency to `spring-cloud-starter-zipkin2` -==== Sleuth with Zipkin via Spring Cloud Stream +==== Sleuth with Zipkin via RabbitMQ or Kafka -If you want both Sleuth and Zipkin just add the `spring-cloud-sleuth-stream` dependency. +If you want to use RabbitMQ or Kafka instead of http, add the `spring-rabbit` or `spring-kafka` +dependencies. The default destination name is `zipkin`. + +_Note: `spring-cloud-sleuth-stream` is deprecated and incompatible with these destinations_ + +If you want Sleuth over RabbitMQ add the `spring-cloud-sleuth-starter-zipkin2` and `spring-rabbit` +dependencies. [source,xml,indent=0,subs="verbatim,attributes",role="primary"] .Maven @@ -344,23 +350,17 @@ If you want both Sleuth and Zipkin just add the `spring-cloud-sleuth-stream` dep <2> org.springframework.cloud - spring-cloud-sleuth-stream + spring-cloud-sleuth-starter-zipkin2 <3> - org.springframework.cloud - spring-cloud-starter-sleuth - - - <4> - org.springframework.cloud - spring-cloud-stream-binder-rabbit + org.springframework.amqp + spring-rabbit ---- <1> In order not to pick versions by yourself it's much better if you add the dependency management via the Spring BOM -<2> Add the dependency to `spring-cloud-sleuth-stream` -<3> Add the dependency to `spring-cloud-starter-sleuth` - that way all dependant dependencies will be downloaded -<4> Add a binder (e.g. Rabbit binder) to tell Spring Cloud Stream what it should bind to +<2> Add the dependency to `spring-cloud-starter-sleuth-zipkin2` - that way all dependent dependencies will be downloaded +<3> To automatically configure rabbit, simply add the spring-rabbit dependency [source,groovy,indent=0,subs="verbatim,attributes",role="secondary"] .Gradle @@ -372,86 +372,14 @@ dependencyManagement { <1> } dependencies { - compile "org.springframework.cloud:spring-cloud-sleuth-stream" <2> - compile "org.springframework.cloud:spring-cloud-starter-sleuth" <3> - // Example for Rabbit binding - compile "org.springframework.cloud:spring-cloud-stream-binder-rabbit" <4> + compile "org.springframework.cloud:spring-cloud-starter-sleuth-zipkin2" <2> + compile "org.springframework.amqp:spring-rabbit" <3> } ---- <1> In order not to pick versions by yourself it's much better if you add the dependency management via the Spring BOM -<2> Add the dependency to `spring-cloud-sleuth-stream` -<3> Add the dependency to `spring-cloud-starter-sleuth` - that way all dependant dependencies will be downloaded -<4> Add a binder (e.g. Rabbit binder) to tell Spring Cloud Stream what it should bind to - -==== Spring Cloud Sleuth Stream Zipkin Collector - -If you want to start a Spring Cloud Sleuth Stream Zipkin collector just add the `spring-cloud-sleuth-zipkin-stream` -dependency - -[source,xml,indent=0,subs="verbatim,attributes",role="primary"] -.Maven ----- - <1> - - - org.springframework.cloud - spring-cloud-dependencies - ${release.train.version} - pom - import - - - - - <2> - org.springframework.cloud - spring-cloud-sleuth-zipkin-stream - - <3> - org.springframework.cloud - spring-cloud-starter-sleuth - - - <4> - org.springframework.cloud - spring-cloud-stream-binder-rabbit - ----- -<1> In order not to pick versions by yourself it's much better if you add the dependency management via -the Spring BOM -<2> Add the dependency to `spring-cloud-sleuth-zipkin-stream` -<3> Add the dependency to `spring-cloud-starter-sleuth` - that way all dependant dependencies will be downloaded -<4> Add a binder (e.g. Rabbit binder) to tell Spring Cloud Stream what it should bind to - -[source,groovy,indent=0,subs="verbatim,attributes",role="secondary"] -.Gradle ----- -dependencyManagement { <1> - imports { - mavenBom "org.springframework.cloud:spring-cloud-dependencies:${releaseTrainVersion}" - } -} - -dependencies { - compile "org.springframework.cloud:spring-cloud-sleuth-zipkin-stream" <2> - compile "org.springframework.cloud:spring-cloud-starter-sleuth" <3> - // Example for Rabbit binding - compile "org.springframework.cloud:spring-cloud-stream-binder-rabbit" <4> -} ----- -<1> In order not to pick versions by yourself it's much better if you add the dependency management via -the Spring BOM -<2> Add the dependency to `spring-cloud-sleuth-zipkin-stream` -<3> Add the dependency to `spring-cloud-starter-sleuth` - that way all dependant dependencies will be downloaded -<4> Add a binder (e.g. Rabbit binder) to tell Spring Cloud Stream what it should bind to - -and then just annotate your main class with `@EnableZipkinStreamServer` annotation: - -[source,java] ----- -include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-sleuth/master/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/java/example/ZipkinStreamServerApplication.java[] ----- +<2> Add the dependency to `spring-cloud-starter-sleuth-zipkin2` - that way all dependent dependencies will be downloaded +<3> To automatically configure rabbit, simply add the spring-rabbit dependency == Additional resources @@ -459,4 +387,4 @@ include::https://raw.githubusercontent.com/spring-cloud/spring-cloud-sleuth/mast video::eQV71Mw1u1c[youtube] -https://www.youtube.com/watch?v=eQV71Mw1u1c[click here to see the video] \ No newline at end of file +https://www.youtube.com/watch?v=eQV71Mw1u1c[click here to see the video] diff --git a/spring-cloud-sleuth-samples/README.adoc b/spring-cloud-sleuth-samples/README.adoc index 936904d5c..bc1e918e8 100644 --- a/spring-cloud-sleuth-samples/README.adoc +++ b/spring-cloud-sleuth-samples/README.adoc @@ -6,11 +6,7 @@ There are a few samples with slightly different features. You can run all of the * `spring-cloud-sleuth-sample`: vanilla (no zipkin) web app that calls back to itself on various endpoints ("/", "/call", "/async") -* `spring-cloud-sleuth-sample-zipkin`: same as vanilla sample but with zipkin (set `sample.zipkin.enabled=true` if you have a collector running) - -* `spring-cloud-sleuth-sample-stream`: same as vanilla sample, but exports span data to RabbitMQ using Spring Cloud Stream - -* `spring-cloud-sleuth-sample-stream-zipkin`: a consumer for the span data on RabbitMQ that pushes it into a Zipkin span store, so it can be queried and visualized using the embedded Zipkin UI. +* `spring-cloud-sleuth-sample-zipkin2`: same as vanilla sample but with zipkin (set `sample.zipkin.enabled=true` if you have a collector running) * `spring-cloud-sleuth-sample-messaging`: a Spring Integration application with two HTTP endpoints ("/" and "/xform") @@ -20,7 +16,7 @@ The Ribbon sample makes an interesting demo or playground for learning about zip === Running samples with Zipkin -1. Optionally run the https://github.com/openzipkin/zipkin[Zipkin] Server, e.g. via docker compose (there's a `docker-compose.yml` in https://github.com/spring-cloud/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin[Spring Cloud Sleuth], or in https://github.com/openzipkin/docker-zipkin[Docker Zipkin] +1. Optionally run the https://github.com/openzipkin/zipkin[Zipkin] Server, e.g. via docker compose (there's a `docker-compose.yml` in https://github.com/spring-cloud/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin2[Spring Cloud Sleuth], or in https://github.com/openzipkin/docker-zipkin[Docker Zipkin] 7. Run the zipkin sample application (set `sample.zipkin.enabled=false` if you have no Zipkin running). If you are using a VM to run docker you might need to tunnel port 9411 to localhost, or change the `spring.zipkin.baseUrl`. 8. Hit `http://localhost:3380`, `http://localhost:3380/call`, `http://localhost:3380/async` for some interesting sample traces (the app callas back to itself). 9. Go to `http://localhost:9411` for Zipkin's UI (if you are using boot2docker the host will be different) @@ -30,16 +26,3 @@ NOTE: You can see the zipkin spans without the UI (in logs) if you run the sampl image::{github-raw}/docs/src/main/asciidoc/images/zipkin-trace-screenshot.png[Sample Zipkin Screenshot] > The fact that the first trace in says "testSleuthMessaging" seems to be a bug in the UI (it has some annotations from that service, but it originates in the "testSleuthRibbon" service). - -=== Running samples with Zipkin Stream - -Instead of POSTing trace data directly to a Zipkin server, you can export them over https://raw.githubusercontent.com/spring-cloud/spring-cloud-stream[Spring Cloud Stream]. - -1. Run the RabbitMQ middleware for Zipkin (you can use `docker-compose.yml`). -2. Build the Zipkin Stream sample with Maven and run it. -7. Run the `spring-cloud-sleuth-sample-stream` app and interact with it in a browser, just like the vanilla sample. If you are using a VM to run docker you might need to tunnel port 5672 to localhost, or change the `spring.rabbbitmq.host`. -9. Go to `http://localhost:9411` for Zipkin's UI - -The UI should look more or less like this: - -image::{github-raw}/docs/src/main/asciidoc/images/zipkin-traces.png[Zipkin Web Screenshot] diff --git a/spring-cloud-sleuth-samples/pom.xml b/spring-cloud-sleuth-samples/pom.xml index 0ea917c50..1a18a656e 100644 --- a/spring-cloud-sleuth-samples/pom.xml +++ b/spring-cloud-sleuth-samples/pom.xml @@ -24,8 +24,6 @@ spring-cloud-sleuth-sample-feign spring-cloud-sleuth-sample-ribbon spring-cloud-sleuth-sample-zipkin2 - spring-cloud-sleuth-sample-stream - spring-cloud-sleuth-sample-zipkin-stream diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml deleted file mode 100644 index f507b6916..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/pom.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - - - 4.0.0 - - spring-cloud-sleuth-sample-stream - jar - spring-cloud-sleuth-sample-stream - Spring Cloud Sleuth Sample - - - org.springframework.cloud - spring-cloud-sleuth-samples - 1.3.0.BUILD-SNAPSHOT - .. - - - - true - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - repackage - - - - - - - maven-deploy-plugin - - true - - - - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.cloud - spring-cloud-sleuth-stream - - - org.springframework.integration - spring-integration-jmx - - - org.springframework.cloud - spring-cloud-stream-binder-rabbit - - - org.springframework.boot - spring-boot-starter-aop - - - org.springframework.boot - spring-boot-starter-actuator - - - org.springframework.boot - spring-boot-starter-test - test - - - - diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleBackground.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleBackground.java deleted file mode 100644 index 329fcddf5..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleBackground.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2013-2015 the original author or authors. - * - * Licensed 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 sample; - -import java.util.Random; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.sleuth.Tracer; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Component; - -/** - * @author Spencer Gibb - */ -@Component -public class SampleBackground { - - @Autowired - private Tracer tracer; - - @Async - public void background() throws InterruptedException { - final Random random = new Random(); - int millis = random.nextInt(1000); - Thread.sleep(millis); - this.tracer.addTag("background-sleep-millis", String.valueOf(millis)); - } - -} diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleController.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleController.java deleted file mode 100644 index 1f4a024b4..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleController.java +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2013-2015 the original author or authors. - * - * Licensed 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 sample; - -import java.util.Random; -import java.util.concurrent.Callable; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.embedded.EmbeddedServletContainerInitializedEvent; -import org.springframework.cloud.sleuth.Span; -import org.springframework.cloud.sleuth.SpanAccessor; -import org.springframework.cloud.sleuth.Tracer; -import org.springframework.cloud.sleuth.sampler.AlwaysSampler; -import org.springframework.context.ApplicationListener; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.client.RestTemplate; - -/** - * @author Spencer Gibb - */ -@RestController -public class SampleController - implements ApplicationListener { - private static final Log log = LogFactory.getLog(SampleController.class); - - @Autowired - private RestTemplate restTemplate; - @Autowired - private Tracer tracer; - @Autowired - private SpanAccessor accessor; - @Autowired - private SampleBackground controller; - - final private Random random = new Random(); - private int port; - - @RequestMapping("/") - public String hi() throws InterruptedException { - Thread.sleep(this.random.nextInt(1000)); - - String s = this.restTemplate - .getForObject("http://localhost:" + this.port + "/hi2", String.class); - return "hi/" + s; - } - - @RequestMapping("/call") - public Callable call() { - return new Callable() { - @Override - public String call() throws Exception { - int millis = SampleController.this.random.nextInt(1000); - Thread.sleep(millis); - SampleController.this.tracer.addTag("callable-sleep-millis", - String.valueOf(millis)); - Span currentSpan = SampleController.this.accessor.getCurrentSpan(); - return "async hi: " + currentSpan; - } - }; - } - - @RequestMapping("/async") - public String async() throws InterruptedException { - this.controller.background(); - return "ho"; - } - - @RequestMapping("/hi2") - public String hi2() throws InterruptedException { - int millis = this.random.nextInt(1000); - Thread.sleep(millis); - this.tracer.addTag("random-sleep-millis", String.valueOf(millis)); - return "hi2"; - } - - @RequestMapping("/traced") - public String traced() throws InterruptedException { - Span span = this.tracer.createSpan("http:customTraceEndpoint", - new AlwaysSampler()); - int millis = this.random.nextInt(1000); - log.info(String.format("Sleeping for [%d] millis", millis)); - Thread.sleep(millis); - this.tracer.addTag("random-sleep-millis", String.valueOf(millis)); - - String s = this.restTemplate - .getForObject("http://localhost:" + this.port + "/call", String.class); - this.tracer.close(span); - return "traced/" + s; - } - - @RequestMapping("/start") - public String start() throws InterruptedException { - int millis = this.random.nextInt(1000); - log.info(String.format("Sleeping for [%d] millis", millis)); - Thread.sleep(millis); - this.tracer.addTag("random-sleep-millis", String.valueOf(millis)); - - String s = this.restTemplate - .getForObject("http://localhost:" + this.port + "/call", String.class); - return "start/" + s; - } - - @Override - public void onApplicationEvent(EmbeddedServletContainerInitializedEvent event) { - this.port = event.getEmbeddedServletContainer().getPort(); - } -} diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java deleted file mode 100644 index 3d7d5b6f3..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/java/sample/SampleSleuthApplication.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2013-2015 the original author or authors. - * - * Licensed 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 sample; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.EnableAspectJAutoProxy; -import org.springframework.scheduling.annotation.EnableAsync; -import org.springframework.web.client.RestTemplate; - -/** - * @author Spencer Gibb - */ -@SpringBootApplication -@EnableAspectJAutoProxy(proxyTargetClass = true) -@EnableAsync -public class SampleSleuthApplication { - - @Bean - public RestTemplate restTemplate() { - return new RestTemplate(); - } - - @Bean - public SampleController sampleController() { - return new SampleController(); - } - - public static void main(String[] args) { - SpringApplication.run(SampleSleuthApplication.class, args); - } - -} diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/resources/application.yml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/resources/application.yml deleted file mode 100644 index b27ac4847..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/main/resources/application.yml +++ /dev/null @@ -1,9 +0,0 @@ -server: - port: 3379 - -spring: - application: - name: testSleuthApp - sleuth: - sampler: - percentage: 1.0 diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/test/java/sample/SampleSleuthApplicationTests.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/test/java/sample/SampleSleuthApplicationTests.java deleted file mode 100644 index fde9576c4..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-stream/src/test/java/sample/SampleSleuthApplicationTests.java +++ /dev/null @@ -1,18 +0,0 @@ -package sample; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.context.web.WebAppConfiguration; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SampleSleuthApplication.class) -@WebAppConfiguration -public class SampleSleuthApplicationTests { - - @Test - public void contextLoads() { - } - -} diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/README.md b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/README.md deleted file mode 100644 index 033f555b7..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Running a Zipkin Server - -There are 3 parts to Zipkin: - -- the instrumented client apps -- the backend database (defaults to in-memory db) -- the Zipkin server - -## Zipkin Services - -Run the Zipkin (remember to have RabbitMQ running) by - -either running Spring Boot Maven plugin: - -``` -./mvnw spring-boot:run --projects spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream -``` - -or running the packaged app from the root: - -``` -./mvnw package --projects spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream -java -jar spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/target/spring-cloud-sleuth-sample-zipkin-stream-1.0.0.BUILD-SNAPSHOT-exec.jar -``` - -and test it - -``` -$ curl localhost:9411/api/v1/services -["zipkin-server"] -``` - -## Instrumenting Apps - -Depend on [Spring Cloud Sleuth Stream](https://github.com/spring-cloud-spring-cloud-sleuth) and the -rabbit binder (`spring-cloud-starter-stream-rabbit`). - -Once the apps start publishing spans they will appear in the span store as well. - -## Running in an IDE - -You can run this app in an IDE and still use docker-compose to create the middleware: - -``` -$ docker-compose up rabbitmq -``` diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/docker-compose.yml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/docker-compose.yml deleted file mode 100644 index ed5568055..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/docker-compose.yml +++ /dev/null @@ -1,7 +0,0 @@ -rabbitmq: - image: rabbitmq:management - expose: - - 5672 - ports: - - 5672:5672 - - 15672:15672 \ No newline at end of file diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml deleted file mode 100644 index fbaad4d24..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/pom.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - - 4.0.0 - - spring-cloud-sleuth-sample-zipkin-stream - jar - - spring-cloud-sleuth-sample-zipkin-stream - Spring Boot Zipkin Server - - - org.springframework.cloud - spring-cloud-sleuth-samples - 1.3.0.BUILD-SNAPSHOT - .. - - - - springio - UTF-8 - 1.8 - true - - - - - org.springframework.boot - spring-boot-configuration-processor - true - - - org.springframework.boot - spring-boot-starter-jdbc - - - org.springframework.cloud - spring-cloud-sleuth-zipkin-stream - - - io.zipkin.java - zipkin-autoconfigure-ui - - - org.springframework.integration - spring-integration-jmx - - - org.springframework.cloud - spring-cloud-stream-binder-rabbit - - - com.h2database - h2 - true - - - mysql - mysql-connector-java - true - - - org.springframework.cloud - spring-cloud-stream-test-support - test - - - org.springframework.boot - spring-boot-starter-test - test - - - org.springframework.cloud - spring-cloud-sleuth-sample-test-core - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - exec - - - - - - diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/java/example/ZipkinStreamServerApplication.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/java/example/ZipkinStreamServerApplication.java deleted file mode 100644 index 4551e4086..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/java/example/ZipkinStreamServerApplication.java +++ /dev/null @@ -1,15 +0,0 @@ -package example; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.sleuth.zipkin.stream.EnableZipkinStreamServer; - -@SpringBootApplication -@EnableZipkinStreamServer -public class ZipkinStreamServerApplication { - - public static void main(String[] args) throws Exception { - SpringApplication.run(ZipkinStreamServerApplication.class, args); - } - -} \ No newline at end of file diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/resources/application.yml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/resources/application.yml deleted file mode 100644 index f8ada4242..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/main/resources/application.yml +++ /dev/null @@ -1,25 +0,0 @@ -server: - port: 9411 - -spring: - rabbitmq: - host: ${RABBIT_HOST:localhost} - datasource: - initialize: false - ---- -spring: - profiles: mysql - datasource: - schema: classpath:/mysql.sql - url: jdbc:mysql://${MYSQL_HOST:localhost}/test - username: root - password: root -# Switch this on to create the schema on startup: - initialize: true - continueOnError: true - sleuth: - enabled: false -zipkin: - storage: - type: mysql # default is mem (in-memory) diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/java/example/ZipkinServerApplicationTests.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/java/example/ZipkinServerApplicationTests.java deleted file mode 100644 index d68df5973..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/java/example/ZipkinServerApplicationTests.java +++ /dev/null @@ -1,30 +0,0 @@ -package example; - -import static org.junit.Assert.assertEquals; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringRunner; - -import zipkin.storage.StorageComponent; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = ZipkinStreamServerApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT, properties = { - "spring.datasource.initialize=true" }) -@ActiveProfiles("test") -public class ZipkinServerApplicationTests { - - @Autowired - private StorageComponent storage; - - @Test - public void contextLoads() { - int count = this.storage.spanStore().getServiceNames().size(); - assertEquals(0, count); - } - -} diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/java/integration/ZipkinStreamTests.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/java/integration/ZipkinStreamTests.java deleted file mode 100644 index 4510d1b9d..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/java/integration/ZipkinStreamTests.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright 2013-2015 the original author or authors. - * - * Licensed 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 integration; - -import static java.util.concurrent.TimeUnit.SECONDS; - -import java.util.Collections; -import java.util.Random; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.sleuth.Span; -import org.springframework.cloud.sleuth.stream.Host; -import org.springframework.cloud.sleuth.stream.SleuthSink; -import org.springframework.cloud.sleuth.stream.Spans; -import org.springframework.cloud.stream.test.binder.TestSupportBinderAutoConfiguration; -import org.springframework.integration.support.MessageBuilder; -import org.springframework.messaging.Message; -import org.springframework.messaging.MessageChannel; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.TestPropertySource; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; - -import example.ZipkinStreamServerApplication; -import tools.AbstractIntegrationTest; - -@RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = { TestSupportBinderAutoConfiguration.class, ZipkinStreamServerApplication.class }, - webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@TestPropertySource(properties = { "server.port=0", "management.health.rabbit.enabled=false" }) -@ActiveProfiles("test") -public class ZipkinStreamTests extends AbstractIntegrationTest { - - @Value("${local.server.port}") - private int zipkinServerPort = 9411; - long traceId = new Random().nextLong(); - long spanId = new Random().nextLong(); - - @Autowired - @Qualifier(SleuthSink.INPUT) - private MessageChannel input; - - @Before - public void setup() { - await().atMost(10, SECONDS) - .untilAsserted(() -> zipkinServerIsUp().run()); - } - - @Test - public void should_propagate_spans_to_zipkin() { - Span span = Span.builder().traceId(this.traceId).spanId(this.spanId).name("http:test").build(); - span.tag(getRequiredBinaryAnnotationName(), "10131"); - - this.input.send(messageWithSpan(span)); - - await().atMost(5, SECONDS).untilAsserted(() -> - allSpansWereRegisteredInZipkinWithTraceIdEqualTo(this.traceId) - ); - } - - private Message messageWithSpan(Span span) { - return MessageBuilder.withPayload( - new Spans(new Host(getAppName(), "127.0.0.1", 8080), Collections.singletonList(span))) - .build(); - } - - @Override - protected int getZipkinServerPort() { - return this.zipkinServerPort; - } - - @Override - protected String getAppName() { - return "local"; - } - -} diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/application-test.yml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/application-test.yml deleted file mode 100644 index 55d8fa962..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/application-test.yml +++ /dev/null @@ -1,3 +0,0 @@ -zipkin: - storage: - type: mem # default is inMemory diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/drop.sql b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/drop.sql deleted file mode 100644 index 507f4f27f..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/drop.sql +++ /dev/null @@ -1,5 +0,0 @@ -drop table zipkin_spans; -drop table zipkin_annotations; -drop table zipkin_binary_annotations; -drop table zipkin_dependencies; -drop table zipkin_dependency_links; \ No newline at end of file diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/logback.xml b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/logback.xml deleted file mode 100644 index 3154e6af4..000000000 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-zipkin-stream/src/test/resources/logback.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/HostLocator.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/HostLocator.java index a82281a55..b4e07048e 100644 --- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/HostLocator.java +++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/HostLocator.java @@ -24,7 +24,9 @@ import org.springframework.cloud.sleuth.Span; * * @author Dave Syer * @since 1.0.0 + * @deprecated Please use spring-cloud-sleuth-zipkin2 to report spans to Zipkin */ +@Deprecated public interface HostLocator { Host locate(Span span); diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthSink.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthSink.java index 3653259fa..09646f9ad 100644 --- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthSink.java +++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthSink.java @@ -28,7 +28,9 @@ import org.springframework.messaging.SubscribableChannel; * @since 1.0.0 * * @see SleuthSource + * @deprecated Please use spring-cloud-sleuth-zipkin2 to report spans to Zipkin */ +@Deprecated public interface SleuthSink { String INPUT = "sleuth"; diff --git a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthSource.java b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthSource.java index 5da616250..f306a7df1 100644 --- a/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthSource.java +++ b/spring-cloud-sleuth-stream/src/main/java/org/springframework/cloud/sleuth/stream/SleuthSource.java @@ -29,7 +29,9 @@ import org.springframework.messaging.MessageChannel; * @since 1.0.0 * * @see SleuthSink + * @deprecated Please use spring-cloud-sleuth-zipkin2 to report spans to Zipkin */ +@Deprecated public interface SleuthSource { String OUTPUT = "sleuth"; diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/EndpointLocator.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/EndpointLocator.java index 4cae07ce5..abeadedc2 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/EndpointLocator.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/EndpointLocator.java @@ -23,7 +23,9 @@ import zipkin.Endpoint; * * @author Dave Syer * @since 1.0.0 + * @deprecated Please use spring-cloud-sleuth-zipkin2 to report spans to Zipkin */ +@Deprecated public interface EndpointLocator { Endpoint local(); diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinLoadBalancer.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinLoadBalancer.java index 83b2af371..383c1cc94 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinLoadBalancer.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinLoadBalancer.java @@ -7,7 +7,9 @@ import java.net.URI; * * @author Marcin Grzejszczak * @since 1.3.0 + * @deprecated Please use spring-cloud-sleuth-zipkin2 to report spans to Zipkin */ +@Deprecated public interface ZipkinLoadBalancer { /** diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinRestTemplateCustomizer.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinRestTemplateCustomizer.java index 1edd4ab68..5cdbe252f 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinRestTemplateCustomizer.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinRestTemplateCustomizer.java @@ -28,7 +28,9 @@ import org.springframework.web.client.RestTemplate; * @author Marcin Grzejszczak * * @since 1.1.0 + * @deprecated Please use spring-cloud-sleuth-zipkin2 to report spans to Zipkin */ +@Deprecated public interface ZipkinRestTemplateCustomizer { void customize(RestTemplate restTemplate); diff --git a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanReporter.java b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanReporter.java index 0ebbf9b5d..d009f2ad9 100644 --- a/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanReporter.java +++ b/spring-cloud-sleuth-zipkin/src/main/java/org/springframework/cloud/sleuth/zipkin/ZipkinSpanReporter.java @@ -5,7 +5,9 @@ package org.springframework.cloud.sleuth.zipkin; * * @author Adrian Cole * @since 1.0.0 + * @deprecated Please use spring-cloud-sleuth-zipkin2 to report spans to Zipkin */ +@Deprecated public interface ZipkinSpanReporter { /** * Receives completed spans from {@link ZipkinSpanListener} and submits them to a Zipkin