[英]Dynamic Router URI in Apache Camel
我正在學習《駱駝在行動》一書的第8章,並使用動態路由器進行測試。 我定義了以下兩條路線:
from("direct:start")
.dynamicRouter(method(DynamicRouterBean.class, "route"))
.log("dynamicRoute result = ${body}");
from("seda:a")
.log("In direct:a with message ${body}");
在DynamicRouterBean的route方法中,我實現了如下的路由邏輯:
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;
}
}
該代碼就像本書所描述的那樣工作...但是我認識到的問題是,如果我在route方法的中間返回端點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;
}
駱駝的DynamicRouter是否需要在URI中間添加“ //”這一功能? 我在這本書或駱駝的官方網站上搜索,但似乎沒有提及此事。如果是,這背后的原因是什么?
是的,Camel中的端點格式為name://context-path?options
例如帶有那些雙斜杠。 因此,如果您將其與書中的進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.