不赞成使用camel AdviceWithRouteBuilder

ssgvzors  于 2022-11-07  发布在  Apache
关注(0)|答案(3)|浏览(190)

我正在使用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

czfnxgou

czfnxgou1#

在未来的版本中,我们已经删除了这些不赞成的地方,因为我们真的只是希望人们能够从CamelContext中访问他们所需要的所有内容。
但它有一个adapt方法,因此您可以在不进行类型转换的情况下适应该类型

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

mm9b1k5b2#

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

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

js81xvg63#

adviceWith方法的移动方式如下所述。

相关问题