骆驼AdviceWithRouteBuilder弃用

时间:2015-04-30 13:38:29

标签: java apache-camel

我正在使用camel 2.15.1并且我尝试使用adviceWith()但我不断收到弃用警告。以下是相关摘录:

routeDefinition.adviceWith(camelContext, new AdviceWithRouteBuilder(){
        @Override
        public void configure() throws Exception {
            interceptSendToEndpoint("direct:doSomething")
                .skipSendToOriginalEndpoint()
        }
    });

我知道我可以通过将camelContext强制转换为ModelCamelContext来避免弃用警告,但是像这样的强制转换会有一些气味。正在以正确的方式处理它吗?

https://camel.apache.org/advicewith.html

2 个答案:

答案 0 :(得分:4)

这些弃用在将来的版本中已被删除,因为我们真的只希望人们从CamelContext访问他们所需的所有内容。

但是它有一个自适应方法,所以你可以适应没有类型转换的类型

ModelCamelContext mcc = context.adapt(ModelCamelContext.class);

答案 1 :(得分:3)

这解决了我的单元测试的问题:

public void testMe() throws Exception{
    CamelContext context = this.context();

    // Get the route that we're after by ID.
    RouteDefinition route = context.getRouteDefinition("<routeID>");

    //override the default send endpoint.
    route.adviceWith(context.adapt(ModelCamelContext.class), new RouteBuilder() {
        public void configure() throws Exception {
            interceptSendToEndpoint("mock:overrideme")
                .skipSendToOriginalEndpoint()
                .to("mock:inbound");
        }
    });
}