2012-05-10 27 views
5

Jak mogę realizować następujące orzecznika Przykład given w Spring DSL:Camel Predicate przykład w 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(); 

Odpowiedz

4

Jak to:

<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

Kontekst aplikacji Spring nie ma atrybutu name w nagłówku, a w ogóle nie istnieje. –

+0

Jakie masz wersje wielbłądów i sprężyn? –

+0

W każdym razie możesz spróbować tego w zamiast predykatu: $ {header.type == 'wombat'}

6

Wymagana prostego elementu (patrz accepted answer) jest

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

Zobacz, w jaki sposób wyrażenie pola jest otoczone przez $ {}, a następnie O Składnia GNL dla porównania, która nie jest częścią samego wyrażenia pola.

+1

$ {header.type == 'widget'} nie działa. Użyj $ {header.type} == 'widget' , jak wspomniał Dhiraj. – jaks