2015-09-26 121 views
0

我想用一些路由与春天DSL骆驼。我无法将消息传送到目的地。我知道我错过了一些东西,请帮我弄清楚这个问题。 我已在deviceMessageRouteIdentifier标题如下基于骆驼内容的路由在春天DSL头问题

Message outMsg = exchange.getOut(); 
    outMsg.setHeader("device_template_id","11"); 
    outMsg.setHeader("view_id", "2"); 

我的骆驼的路线是这里

<camel:route> 
    <camel:from uri="direct:devicemessageprocessor"/> 
    <camel:bean ref="deviceMessageRouteIdentifier"/> 
    <camel:to uri="seda:deviceRouting"/> 
    </camel:route> 
      <camel:route> 
     <camel:from 
      uri="seda:deviceRouting?concurrentConsumers=10&amp;blockWhenFull=true&amp;purgeWhenStopping=true" /> 
     <choice> 
      <when> 
       <header>$device_template_id = '11'</header> 
       <to uri="direct:gen2Bridge" /> 
      </when> 
      <when> 
       <header>$view_id = '1'</header> 
       <to uri="direct:prediction" /> 
      </when> 
     </choice> 
    </camel:route> 

    <camel:route> 
     <camel:from uri="direct:gen2Bridge"/> 
     <camel:bean ref="gen2BridgeProcessor" /> 
    </camel:route> 

我能够在deviceMessageRouteIdentifier达到,但不能提前

由于到达目的地gen2BridgeProcessor

回答

0

您应该使用简单的语言作为谓词,而不是标题。标题仅用于查找标题值。

<header>$device_template_id = '11'</header> 

应该

<simple>${header.device_template_id} == '11'</simple> 

而平等经营==。见简单的语言,了解更多详情

+0

它的工作。谢谢 –