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);
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>
  <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 进程。