在非 Spring 应用程序中创建 traceID

Create traceID in a non-Spring application

关于如何创建 traceID 的小问题,但如果应用程序不是 Spring-based,请。

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

目的地、服务器都是Spring引导Spring基于云的网络应用程序。我想强调的是,虽然服务器是基于 Spring 的,但我,客户端,不是 Spring 启动应用程序。

虽然我的应用程序是非 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 所以后续服务获得我创建的服务?

默认情况下,Sleuth 使用名为 Brave 的 OpenZipkin 跟踪库。如果你的应用程序是基于 java 的,你可以使用 Brave,如果不是,你可以在 OpenZipkin org or official and non-official ones in https://zipkin.io/pages/tracers_instrumentation.html