1
我遵循「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的中間添加「//」嗎?我搜索了這本書或駱駝官方網站,但似乎沒有提到這個...如果是的話,背後的原因是什麼?
感謝您的回答......只是想確認一下......動態路由器會自動使用雙斜線重新格式化這些端點URI?我從https://github.com/camelinaction/camelinaction下載了動作示例代碼中的駱駝,除了DynamicRouterBean示例 – xlogger
以外,大部分示例代碼都使用不帶雙斜槓的URI。例如,當Camel提供上述參數時,例如駱駝只要不是你硬編碼的價值。當你指定一個URI時,你可以省略雙斜線。 –