2015-04-05 60 views
0

我在駱駝班有一條路線。我需要不同的routeIDs不同的選擇。即當transtype=CXML被調用時,routeId應顯示爲CXML &當transtype=OCI被調用時,routeId應顯示爲OCI我們可以針對多個選擇的特定路線有不同的路線ID嗎?

那裏我使用不同的選擇。

例如。

from(IntegrationConstants.JMSQUEUE) 
    .process(routeHeaderProcessor) 
    .choice() 
    .when(transtype=CXML) 
    .then(...........) 
    .routeId(CXML) 
    .when() 
    .when(transtype=OCI) 
    .then(...........) 
    .routeId(OCI) 

然而,當我運行這個程序與transType=CXMLOCI,我只得到輸出routeIdOCI

你能否建議我如何在同一路線中爲不同的transType選擇不同的routeID?

我被困在這一段時間了。如果不是routeID,我們可以爲不同的選擇分配一些唯一的ID嗎?這樣我們可以使事情更具體化?

+0

請有關如何格式化您的文章閱讀[編輯幫助(http://stackoverflow.com/editing-help)。 – 2015-04-05 08:12:04

+0

路線啓動後,您無法更改路線ID。正如Petter所說,您可以使用其他路線作爲子路線並使用直接端點將其鏈接起來。 – 2015-04-05 16:16:25

回答

0

使用「子路徑」使用直接傳輸來完成每個選項中完成的各種事情。然後你可以在每個「子路徑」上設置唯一的routeIds。

直接調用是便宜的。從網站

例子:

from("direct:a") 
      .choice() 
       .when(header("foo").isEqualTo("bar")) 
        .to("direct:b") 
       .when(header("foo").isEqualTo("cheese")) 
        .to("direct:c") 
       .otherwise() 
        .to("direct:d"); 
    } 


    from("direct:b") 
    .routeId("b") 
    .doWhateverHere(); 

    from("direct:c") 
    .routeId("c") 
    .doWhateverHere(); 

    from("direct:d") 
    .routeId("d") 
    .doWhateverHere(); 
+0

你能解釋一下嗎?我明白了。我們如何創建子路線? – shefali 2015-04-05 18:05:23

+0

你能解釋一下嗎?我不明白。我們如何創建子路線? \t對不起,我是駱駝新手,你能進一步闡述一下嗎? – shefali 2015-04-05 18:08:07

+0

在問題中添加了示例 – 2015-04-06 06:56:00