38.2. Configuration
AWS XRay tracer 的配置属性是:
选项 | 默认 | 描述 |
---|---|---|
addExcludePatterns |
| 设置将禁用与模式匹配 Camel 消息的追踪的 exclude 模式。内容是一个 Set<String>,其中键是与 routeId 的模式匹配。模式使用来自 Intercept 的规则。 |
setTracingStrategy | NoopTracingStrategy |
允许提供自定义 Camel |
目前,只有 AWS XRay tracer 可以被配置为为 Camel 应用程序提供分布式追踪:
38.2.1. 显式
在您的 POM 中包含 camel-aws-xray
组件,以及与 AWS XRay Tracer 关联的任何特定依赖项。
要显式配置 AWS XRay 支持,请实例化 XRayTracer
并初始化 camel 上下文。您可以选择指定一个 Tracer
,也可以使用 Registry
或 ServiceLoader
来隐式发现。
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 |
Camel-AWS-XRay-Trace-Entity |
包含对复制到新线程的实际 AWS XRay |
请注意,AWS XRay Entity
(即 Segment
和 Subsegment
)不可序列化,因此不应传递给其他 JVM 进程。