110.6. スパンに RouteID 属性を追加する
ルートの起点を識別するには、スパンに RouteID 属性を追加する必要があります。回避策としては、Camel の Span デコレーターを使用します。このためには、ルート ID で強化する各コンポーネントにカスタムデコレータを追加します。たとえば、直接コンポーネントにルート ID を出力する場合、実装は次のようになります。
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.tracing.SpanAdapter;
import org.apache.camel.tracing.decorators.DirectSpanDecorator;
public class RouteIDSpanDecorator extends DirectSpanDecorator {
@Override
public void pre(SpanAdapter span, Exchange exchange, Endpoint endpoint) {
super.pre(span, exchange, endpoint);
span.setTag("camel.route.id", exchange.getFromRouteId());
}
}
クラスの参照が含まれる org.apache.camel.tracing.SpanDecorator という名前のファイルを src/main/resources/META-INF/services フォルダーに追加します。(例: com.redhat.xxxx.RouteIDSpanDecorator)。これにより、Camel トレース機能は、トレースにタグが適用されたカスタム Span デコレーターをロードできるようになります。