2012-05-10 2 views
5

Wie kann ich Prädikat Beispiel given im Frühjahr DSL Anschluss implementieren:Camel Prädikat Beispiel in 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(); 

Antwort

4

So:

<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

Der Spring-Anwendungskontext hat kein name-Attribut im Header und existiert überhaupt nicht. –

+0

Was sind deine Kamel- und Frühlingsversionen? –

+0

Jedenfalls könnten Sie dies in anstelle von Prädikat versuchen: $ {header.type == 'wombat'}

6

Das erforderliche einfache Elements (siehe accepted answer) ist

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

Beachten Sie, wie der Feldausdruck von $ {gefolgt von O umgeben ist GNL-Syntax zum Vergleich, die nicht Teil des Feldausdrucks selbst ist.

+1

$ {header.type == 'widget'} funktioniert nicht. Verwenden Sie $ {header.type} == 'widget' wie von Dhiraj erwähnt. – jaks