我需要在一个基于 Java 的服务中实现 Zipkin 跟踪,该服务使用 Project Reactor Kafka 进行反应式流和非阻塞 IO 操作。我找不到任何支持反应式卡夫卡的勇敢的仪器库。
标准的Kafka客户端勇敢的仪器:
https://github.com/openzipkin/brave/tree/master/instrumentation/kafka-clients
不支持 Reactive-Kafka。
是否有一个库或存储库可以帮助我在 java 中对反应式 Kafka 进行 Zipkin 跟踪?
在我的项目中,我们在发送事件之前手动生成了跨度。
var span = tracing.tracer((.nextSpanWithParent(req -> true,Void.class, ctx.get(Span.class(.context(((;
span.name("yourSpanName"(.start((;
return sendEventPublisher.doOnError(span::error(.doOnTerminate(span::finish(;
这样,我们还将跨度链接到发布者生命周期,因为我们在线程之间共享跨度时遇到了问题。
基本上,我们创建一个跨度并将其链接到 Spring 为请求创建的父上下文(来自传入的 B3 HTTP 标头,或者如果不存在则生成(。 "ctx"是这里的订阅者上下文。
这也意味着告诉侦探不要在application.properties中为异步操作生成跨度:
spring.sleuth.async.enabled=false