38.2. 配置


AWS XRay tracer 的配置属性有:

选项默认描述

addExcludePatterns

 

设置将针对与模式匹配的 Camel 消息禁用追踪的排除模式。内容是一个 Set<String>,其中键是与 routeId 的模式匹配。该模式使用来自 Intercept 的规则。

setTracingStrategy

NoopTracingStrategy

允许提供自定义 Camel InterceptStrategy 来跟踪调用的处理器定义,如 BeanDefinitionProcessDefinitionTraceAnnotatedTracingStrategy 将跟踪通过 .bean (…​).process (…​) 调用的任何类,其中包含类级别的 @XRayTrace 注释。

目前,只有 AWS XRay tracer 可以配置为为 Camel 应用程序提供分布式追踪:

38.2.1. explicit

在您的 POM 中包含 camel-aws-xray 组件,以及与 AWS XRay Tracer 关联的任何特定依赖项。

要明确配置 AWS XRay 支持,请实例化 XRayTracer 并初始化 camel 上下文。您可以选择指定 Tracer,也可以使用 RegistryServiceLoader 隐式发现。

XRayTracer xrayTracer = new XRayTracer();
// By default it uses a NoopTracingStrategy, but you can override it with a specific InterceptStrategy implementation.
xrayTracer.setTracingStrategy(...);
// And then initialize the context
xrayTracer.init(camelContext);

要在 XML 中使用 XRayTracer,您需要做的都是定义 AWS XRay tracer bean。Camel 将自动发现并使用它。

  <bean id="tracingStrategy" class="..."/>
  <bean id="aws-xray-tracer" class="org.apache.camel.component.aws.xray.XRayTracer" />
    <property name="tracer" ref="tracingStrategy"/>
  </bean>

如果默认 NoopTracingStrategy 只跟踪创建和删除交换,但不会跟踪某些 Bean 或 EIP 模式的调用。

38.2.2. 跟踪全面的路由执行

为了跟踪多个路由之间交换的执行,在交换创建时,会在标头中生成并存储在标头中(如果没有对应的值)。此追踪 ID 被复制到新的交换,以便保持已处理交换的一致性视图。

由于 AWS XRay trace 会根据当前子/网段的本地线程工作,因此应复制到新线程,并根据 AWS XRay 文档中所述 进行设置。因此,Camel AWS XRay 组件提供了一个额外的标头字段,组件将传递的 AWS XRay Entity 设置为新线程,从而使跟踪的数据保留在路由中,而不是公开一个新的片段,它看似与任何执行的路由无关。

组件将使用交换标头中找到的以下常量:

标头描述

Camel-AWS-XRay-Trace-ID

包含对 AWS XRay TraceID 对象的引用,以提供调用路由的综合视图

Camel-AWS-XRay-Trace-Entity

包含对复制到新线程的实际 AWS XRay SegmentSubsegment 的引用。当生成新线程时,应设置此标头,并且执行的任务应作为执行的路由的一部分公开,而不是创建新的不相关的片段。

请注意,AWS XRay Entity (例如,SegmentSubsegment)不可序列化,因此不应传递给其他 JVM 进程。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.