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

Why does this Apache Camel intercept not work?

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

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);
    }
}

我有第二个 "intercept" 路线建设者:

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);
    }
}

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

public class App {

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

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

}

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

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

似乎是,如果您使用@Produce 注释创建您的生产者,那么它就不会被拦截。而如果我输入:

@Bean
public ProducerTemplate producerTemplate() {
    return camelContext().createProducerTemplate();
}

在我的应用程序配置中,改为使用它,然后它确实被拦截了。不确定这是否是预期的行为?