Java+Brave+Zipkin:问题是,跟踪总是一样的
关于生成跟踪ID的小问题,当我是客户端应用程序时,请注意HTTP请求的发起人
下面是一段非常简单的代码:
public class Question {
public static void main(String[] args) {
List<String> listOfManyIdentifiers = getListOfManyIdentifiersToSendToAPI();
for (String identifier : listOfManyIdentifiers) {
sendTheIdentifierToAnotherAPI(identifier);
}
}
private static void sendTheIdentifierToAnotherAPI(String identifier) {
final OkHttpSender sender = OkHttpSender.newBuilder().endpoint("https://some-zipkin.com:9411/api/v2/spans").build();
final AsyncReporter<Span> reporter = AsyncReporter.builder(sender).build();
final Tracing tracing = Tracing.newBuilder().localServiceName(UnregisterRepairServiceMain.class.getSimpleName()).addSpanHandler(ZipkinSpanHandler.create(reporter)).build();
tracing.tracer().startScopedSpan("parentSpan");
final var span = tracing.tracer().currentSpan();
span.tag("key", "firstBiz");
// Child
tracing.tracer().startScopedSpanWithParent("childSpan", tracing.tracer().currentSpan().context());
final var childSpan = tracing.tracer().currentSpan();
childSpan.tag("key", "secondBiz");
childSpan.finish();
final WebClient webClient = WebClient.create().mutate().defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE, HttpHeaders.ACCEPT, MediaType.APPLICATION_JSON_VALUE).clientConnector(new ReactorClientHttpConnector(HttpClient.create().wiretap(true).protocol(HttpProtocol.H2))).build();
final String response = webClient.post().uri("https://some-other-api/api/v2/spans").header("X-B3-TraceId", span.context().traceIdString()).header("X-B3-SpanId", childSpan.context().traceIdString()).body(BodyInserters.fromValue(identifier)).retrieve().bodyToMono(String.class).block();
System.out.println("This is the response " + response);
System.out.println("Traces are always the same.");
}
}
代码将获得一堆标识符(列表),并将它们逐个发送给第三个PRATAPI,后者将知道如何处理它们
由于我们希望能够更好地了解交互,作为客户机的我希望生成跟踪,因此我们都能够了解请求,并能够进行调试
对于上面的代码,我希望每个跟踪都会不同,因为我发送了X个不同数量的请求,我希望服务器会看到X个不同数量的跟踪
但是,我查看了服务器日志,所有跟踪都是相同的:
(来自服务器)
2021-11-03 10:25:09.421 INFO [serverservice,96233c7e509ed9bd,88ef6cfe2761a29d] 83 --- [or-http-epoll-1] c.a.p.c.v.r.controller : I RECEIVED A NEW REQUEST WITH ID = abc
2021-11-03 10:25:09.425 INFO [serverservice,96233c7e509ed9bd,88ef6cfe2761a29d] 83 --- [or-http-epoll-1] c.a.p.c.v.r.controller : I RECEIVED A NEW REQUEST WITH ID = def
2021-11-03 10:25:09.429 INFO [serverservice,96233c7e509ed9bd,88ef6cfe2761a29d] 83 --- [or-http-epoll-1] c.a.p.c.v.r.controller : I RECEIVED A NEW REQUEST WITH ID = ghi
2021-11-03 10:25:09.751 INFO [serverservice,96233c7e509ed9bd,88ef6cfe2761a29d] 83 --- [or-http-epoll-4] c.a.p.c.v.r.controller : I RECEIVED A NEW REQUEST WITH ID = jkl
2021-11-03 10:25:09.753 INFO [serverservice,96233c7e509ed9bd,88ef6cfe2761a29d] 83 --- [or-http-epoll-4] c.a.p.c.v.r.controller : I RECEIVED A NEW REQUEST WITH ID = mno
2021-11-03 10:25:09.759 INFO [serverservice,96233c7e509ed9bd,88ef6cfe2761a29d] 83 --- [or-http-epoll-4] c.a.p.c.v.r.controller : I RECEIVED A NEW REQUEST WITH ID = pqr
请问我做错了什么,所以每次我都会被一条相同的轨迹困住?如何解决这个问题
多谢各位
共 (0) 个答案