首页 > 解决方案 > 在非 Spring 应用程序中创建 traceID

问题描述

关于如何创建 traceID 的小问题,但是当应用程序不是基于 Spring 的时候。

我的应用程序是第一个,是 HTTP 调用的发起者。因此,该应用程序可以被视为客户端

目的地,服务器,都是基于 Spring Boot Spring Cloud 的 Web 应用程序。我想强调一下,虽然服务器是基于 Spring 的,但我,客户端,我不是 Spring Boot 应用程序。

虽然我的应用程序是非 Spring 应用程序,但我确实使用 Spring Webflux WebClient 来创建对这些服务器的 HTTP 请求。需要强调的是,并不是因为我使用了 Spring Webflux WebClient,才使该应用程序成为 Spring 应用程序!

由于我是调用链的第一个,我想创建某种traceID,所以后续的服务会携带我创建的traceID。

我很困惑我尝试过的这段代码中应该包含什么:

final var  response = webClient.post().uri("http://some-third-party-api.com/someroute").header("X-B3-TraceId", "How to create a traceID?").body(BodyInserters.fromValue(payload)).retrieve().bodyToMono(String.class).block();

因此,我想问一下,作为第一个 HTTP 调用发起者,使用 Spring Webflux WebClient,但是在非 Spring 应用程序中,如何创建这些 traceID 以便后续服务获得我创建的那个?

标签: javaspring-webfluxspring-cloud-sleuthzipkinopentracing

解决方案


默认情况下,Sleuth 使用 OpenZipkin 的名为Brave的跟踪库。如果您的应用程序是基于 java 的,您可以使用 Brave,如果不是,您可以在OpenZipkin org中找到其他平台的官方实现, 或者在https://zipkin.io/pages/tracers_instrumentation.html中找到官方和非官方的实现


推荐阅读