我遵循" 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官方网站,但似乎没有提到这个...如果是的话,这背后有什么原因吗?
答案 0 :(得分:0)
是的,Camel中的端点格式为name://context-path?options
,例如使用这些双斜杠。因此,如果你将其与书中的内容进行比较。