Apache Camel中的动态路由器URI

时间:2015-07-13 07:59:59

标签: java apache-camel

我遵循" Camel in Action"的第8章。使用动态路由器预订和测试。我已经定义了两条路线如下:

from("direct:start")
.dynamicRouter(method(DynamicRouterBean.class, "route"))
.log("dynamicRoute result = ${body}");

from("seda:a")
.log("In direct:a with message ${body}");

在DynamicRouterBean的路由方法中,我实现了如下路由逻辑:

public String route(String body, @Header(Exchange.SLIP_ENDPOINT) String previous) {
    System.out.println("Enter DynamicRouterBean, body=" + body + ", previous=" + previous);
    if (previous == null) {
        return "seda://a";
    } else if ("seda://a".equals(previous)) {
        return "language://simple:Bye ${body}";
    } else {
        // no more, so return null to indicate end of dynamic router
        return null;
    }
}

代码按照本书描述的那样工作......但我认识到的问题是,如果我返回没有双斜杠的端点URI" //"在路线方法的中间,检查先前的第二个条件等于" seda:a"将失败,因此动态路线将停在那里

if (previous == null) {
        return "seda:a";
    } else if ("seda:a".equals(previous)) {
        // This condition will not match... and it will return null
        return "language:simple:Bye ${body}";
    } else {
        // no more, so return null to indicate end of dynamic router
        return null;
    }

Camel的DynamicRouter是否需要添加" //"在URI的中间?我搜索这本书或Camel官方网站,但似乎没有提到这个...如果是的话,这背后有什么原因吗?

1 个答案:

答案 0 :(得分:0)

是的,Camel中的端点格式为name://context-path?options,例如使用这些双斜杠。因此,如果你将其与书中的内容进行比较。