2015-04-05 62 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