Apache Camel中的动态路由器URI
问题描述:
我遵循“Camel in Action”一书的第8章并使用动态路由器进行测试。我已经定义了如下两种途径:Apache Camel中的动态路由器URI
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;
}
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中的终点被格式化为name://context-path?options
,例如双斜杠。所以如果你比较一下这本书。
感谢您的回答......只是想确认一下......动态路由器会自动使用双斜线重新格式化这些端点URI?我从https://github.com/camelinaction/camelinaction下载了动作示例代码中的骆驼,除了DynamicRouterBean示例 – xlogger
以外,大部分示例代码都使用不带双斜杠的URI。例如,当Camel提供上述参数时,例如骆驼只要不是你硬编码的价值。当你指定一个URI时,你可以省略双斜线。 –