38.2. Configuration


AWS XRay tracer 的配置属性是:

选项默认描述

addExcludePatterns

 

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

setTracingStrategy

NoopTracingStrategy

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

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

38.2.1. 显式

在您的 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. 跟踪全面的路由执行

为了跟踪在多个路由间交换的执行,在创建唯一 trace ID 时生成并存储在标头中(如果没有对应的值)。此 trace 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.