java - Project Reactor Kafka 的 Zipkin 跟踪
问题描述
我需要在一项基于 java 的服务中实现 Zipkin 跟踪,该服务使用 Project Reactor Kafka 进行反应流和非阻塞 IO 操作。我找不到任何支持响应式 Kafka 的勇敢的仪器库。
标准的 Kafka 客户端勇敢工具:
https://github.com/openzipkin/brave/tree/master/instrumentation/kafka-clients
不支持 Reactive-Kafka。
是否有库或存储库可以帮助我在 java 中使用 Zipkin 跟踪响应式 Kafka?
解决方案
在我的项目中,我们在发送事件之前手动生成了跨度。
var span = tracking.tracer().nextSpanWithParent(req -> true, Void.class, ctx.get(Span.class).context());
span.name("yourSpanName").start();
返回 sendEventPublisher.doOnError(span::error).doOnTerminate(span::finish);
这样,我们还将跨度链接到发布者生命周期,因为我们遇到了线程之间的 webflux 共享跨度问题。
基本上,我们创建一个 span 并将其链接到 Spring 为请求创建的父上下文(来自传入的 B3 HTTP 标头,或者如果不存在则生成)。“ctx”是这里的订阅者上下文。
这也意味着告诉侦探不要为 application.properties 中的异步操作生成跨度:
spring.sleuth.async.enabled=false
推荐阅读
- java - 用Java生成数独
- r - 如何在 R 中对组内的列进行排序?
- android - Android kaptDebugKotlin failed + SQL 错误或缺少数据库(没有这样的表:约会)
- java - 如何制作@Scheduled 注释的动态参数?
- java - 从 2 Arraylist 中删除常用条目
- json - 如何只转换为json可以转换的数据?
- mysql - 如何在express.js中使用mysql将n个输入存储到一个数组中
- c# - 如何在没有其他 Nuget 包的情况下打开 zip 文件?
- angular - 延迟加载与 Childroutes 不起作用
- python - 使用 Python re.Search() 查找不允许的字符