108.6. スパンへの RouteID 属性の追加
Route の発信元を特定するには、スパンに RouteID 属性を追加する必要があります。回避策は、Camel から Span デコレーターを使用することです。これには、ルート ID で補完するコンポーネントごとにカスタムデコレーターを追加します。たとえば、direct コンポーネントでルート 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 デコレーターをロードできます。