为什么这个Apache Camel拦截不起作用?

Jam*_*mes 2 java apache-camel intercept

我有一个主要的路线建设者:

public class MainRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("activemq:a.out").to("activemq:b.in");

        from("activemq:b.in").bean(MainMessageConsumer.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有第二个“拦截”路由构建器:

public class InterceptRouteBuilder extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        interceptSendToEndpoint("activemq:a.out").to("activemq:c.in").skipSendToOriginalEndpoint();

        from("activemq:c.in").bean(InterceptMessageConsumer.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

两者都注册到 CamelContext(首先注册 MainRouteBuilder,然后注册 InterceptRouteBuilder)。但是,当我通过以下方式向“activemq:a.out”发送消息时:

public class App {

    @Produce(uri="activemq:a.out")
    private Producer producer;

    public void run() {
        producer.request("hello");
    }

}
Run Code Online (Sandbox Code Playgroud)

消息仍然到达 MainMessageConsumer 而不是被拦截。我究竟做错了什么?

Cla*_*sen 5

拦截器仅适用于同一路由构建器类中的所有路由。如果你想让它同时工作,那么创建一个基类,并将拦截器放在那里,让其他路由扩展你的基类,并在配置方法中调用它的超级(例如 OO 继承)