我正在创建一个带有对服务的改造调用的客户端 sdk,打包为一个单独的 jar。我必须在此 jar 中包含 zipkin 跟踪器/跟踪,以便任何使用此 jar 与服务通信的应用程序都为每次调用服务自动创建一个单独的跨度。我的问题有可行的解决方案吗?
我一直在尝试使用“io.zipkin.brave:brave-instrumentation-okhttp3”库来解决这个问题。我还添加了“org.springframework.cloud:spring-cloud-starter-sleuth”依赖项,以便默认生成跟踪器 ID。但是将此 jar 添加到使用 kafka-streams 和“io.zipkin.brave:brave-instrumentation-kafka-streams”依赖项的项目中,不会自动初始化一个新的跨度。
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(JacksonConverterFactory.create())
.addCallAdapterFactory(UnwrappedCallAdapterFactory.create());
// Enable zipking tracing
HttpTracing httpTracing = HttpTracing.create(tracing).clientOf(client);
httpClient.dispatcher(new Dispatcher(
httpTracing.tracing().currentTraceContext()
.executorService(new Dispatcher().executorService())
)).addNetworkInterceptor(TracingInterceptor.create(httpTracing));
Retrofit retrofit = builder.build();
我期望的是,使用这个 jar 的应用程序默认情况下对于他们通过这个 jar 进行的每个改造调用都有一个单独的跨度。