Open tracer Jaeger Trace 没有得到 apache camel 的反映

Open tracer Jaeger Trace not getting reflect for apache camel

我是 apache camel 和 Jaeger open tracing 的新手,我试图在 Jaeger 中获取 apache camel 的踪迹 UI 但它没有通过 Open Tracing 捕获。

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.springframework.stereotype.Component;

@Component
public class RouteBuilderClient {

    public void test() throws Exception {

        DefaultCamelContext camelContext = new DefaultCamelContext();
        camelContext.addRoutes(new RouteBuilder() {
            @Override
            public void configure() throws Exception {
                from("timer:first-timer")
                        .to("log:first-timer");
            }
        });
        camelContext.start();
        camelContext.stop();

    }


}

但是,如果我扩展 RouteBuilder class(下面是示例代码),然后覆盖配置方法,则会为 Apache camel 生成跟踪。有什么办法不扩展 routeBuilder 就可以得到痕迹吗?

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;

@Component
public class RouteBuilderClient extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("timer:first-timer")
                .to("log:first-timer");
    }
}

我的控制器class:

import org.apache.camel.opentracing.starter.CamelOpenTracing;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@CamelOpenTracing
public class JaegarClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(JaegarClientApplication.class, args);

    }

}

在启动 Camel 上下文之前,尝试在您的 setup() 方法中添加:

OpenTracingTracer ottracer = new OpenTracingTracer();
ottracer.init(camelContext);

camelContext.start();

下面是我成功运行的代码。

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;
import org.apache.camel.opentracing.OpenTracingTracer;

public class RouteBuilderClient3 {
    public void test() throws Exception {


        RouteBuilder builder = new RouteBuilder() {
            public void configure() {
                from("timer:first-timer3").transform().constant("Rajesh client 3")
                        .to("log:first-timer3");
            }

        };
        CamelContext myCamelContext = new DefaultCamelContext();
        myCamelContext.addRoutes(builder);

        OpenTracingTracer ottracer = new OpenTracingTracer();
        ottracer.init(myCamelContext);
        myCamelContext.start();

//        myCamelContext.stop();
    }
}