簡體   English   中英

Apache Camel中的動態路由器URI

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM