2012-05-10 100 views
5

我如何能實現以下謂詞例given在Spring DSL:駱駝謂詞實例XML DSL

Predicate isWidget = header("type").isEqualTo("widget"); 

from("jms:queue:order") 
    .choice() 
     .when(isWidget).to("bean:widgetOrder") 
     .when(isWombat).to("bean:wombatOrder") 
    .otherwise() 
     .to("bean:miscOrder") 
    .end(); 

回答

4

像這樣:

<route> 
    <from uri="jms:queue:order"/> 
    <choice> 
    <when> 
     <simple>${header.type} == 'widget'</simple> 
     <to uri="bean:widgetOrder"/> 
    </when> 
    <when> 
     <simple>${header.type} == 'wombat'</simple> 
     <to uri="bean:wombatOrder"/> 
    </when> 
    <otherwise> 
     <to uri="bean:miscOrder"/> 
    </otherwise> 
    </choice> 
</route> 
+0

Spring應用程序上下文在標頭中沒有名稱屬性,根本不存在。 –

+0

你的駱駝和春天的版本是什麼? –

+0

無論如何,您可以在而不是謂詞中嘗試此操作: $ {header.type =='wombat'}

6

所需的簡單元素(見accepted answer)是

<simple>${header.type} == 'widget'</simple> 

請注意字段表達式是如何被$ {}包圍的,後面跟着O用於比較的GNL語法,它不是字段表達式本身的一部分。

+1

$ {header.type =='widget'}不起作用。如Dhiraj所述,使用 $ {header.type} =='widget'。 – jaks