当前位置: 首页 > 知识库问答 >
问题:

如何在Spring Sleuth和Brave中使用TraceContext设置traceId?

南门焱
2023-03-14

我不想使用Spring Sleuth/Brave创建的一个,因为我想让它在我不同的微服务中保持一致。我能够创建痕迹和跨度,并能够发送所有的细节到Zipkin。我的示例代码段:

import brave.Span;
import brave.Span.Kind;
import brave.Tracer;
import brave.propagation.TraceContext;  

span = this.tracer.nextSpan().name("myservice");
span.kind(Kind.SERVER);
span.tag("path", servletPath).start();

我正在使用:Spring Cloud'greenwich.build-snapshot'和Brave。整个目的是在zipkin UI中使用correlationId而不是traceId进行搜索。

共有1个答案

卫阳炎
2023-03-14

您将需要自己的propagationFactory实现。下面是默认的:https://github.com/openzipkin/brave/blob/master/brave/src/main/java/brave/propagation/b3propagation.java

您可以创建一个bean,sleuth应该使用这个bean而不是这个bean。

更具体地说,您需要一个带有自定义traceContext.extractor 实现的实现。然后,这可以从头部提取跟踪ID,并添加返回适当的traceContext。然后它可以使用普通的头传递它。如果希望在向下游发送时使用相同的相关头,则还必须实现traceContext.injector

 类似资料:
  • 如何在TypeORM中使用getter和setter。 我在这里和这里都看到了问题,但没有找到答案 例如,离开我的用户实体 我使用的是类型ORM版本 0.2.7

  • 问题内容: 对于多分支项目,我有一个声明性管道脚本,在该脚本中,我想读取文本文件并将结果存储为字符串变量,以供管道的后续步骤访问。使用摘要生成器,我尝试执行以下操作: 为此,这将是我的字符串。 在Jenkins控制台输出中出现错误: 我是否需要使用一个步骤来将Jenkins环境变量的输出设置为?如果是这样,怎么办? 谢谢 问题答案: 该错误是由于只允许您在指令中使用管道步骤。我知道一种解决方法是使

  • 我已经尝试在Objective-C中创建HTTP Get。 它使用中的,并使用选择或。 并通过以下代码设置标头:

  • 问题内容: 我想要一个使用样式的单元格。 我最初的Objective-C代码是: 在已经在SO上搜索了几个问题之后,我想像这样在Swift中编写它: 但这并不能让我说我想要一种风格。所以我尝试了这个: 这给了我一个牢房,但是却没有让我。 我已经研究了更多内容,并观看了此视频教程,但是他创建了一个单独的对象,我认为这是不必要的,因为我之前在Obj- C中实现了相同的效果。 有任何想法吗?谢谢。 问题

  • 问题内容: 我想使用带有以下条目的application.properties文件设置配置文件: 如何在我的context.xml文件中设置spring.profiles.active?init-param仅在web.xml上下文中有效。 问题答案: 有几种更改活动配置文件的方法,这些方法都不直接取自属性文件。 您可以像在问题中一样使用。 您可以在应用程序启动时提供系统参数 你可以得到从你和编程方

  • 问题内容: 我想在应用程序委托中设置rootViewController .. 问题答案: 你可以做这样的事情。