38.2. 配置
AWS XRay tracer 的配置属性有:
选项 | 默认 | 描述 |
---|---|---|
addExcludePatterns |
| 设置将针对与模式匹配的 Camel 消息禁用追踪的排除模式。内容是一个 Set<String>,其中键是与 routeId 的模式匹配。该模式使用来自 Intercept 的规则。 |
setTracingStrategy | NoopTracingStrategy |
允许提供自定义 Camel |
目前,只有 AWS XRay tracer 可以配置为为 Camel 应用程序提供分布式追踪:
38.2.1. explicit
在您的 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. 跟踪全面的路由执行
为了跟踪多个路由之间交换的执行,在交换创建时,会在标头中生成并存储在标头中(如果没有对应的值)。此追踪 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 进程。