2012-05-10 11 views
5

¿Cómo puedo aplicar siguiente predicado Ejemplo given en la primavera de DSL:Camel predicado Ejemplo de DSL xml

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(); 

Respuesta

4

De esta manera:

<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

El contexto de la aplicación Spring no tiene atributo de nombre en el encabezado y no existe. –

+0

¿Cuáles son sus versiones de camello y primavera? –

+0

De todos modos, puede probar esto en en lugar del predicado: $ {header.type == 'wombat'}

6

El elemento simple requerida (ver accepted answer) es

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

Observe cómo la expresión de campo está rodeada por $ {} seguido de O Sintaxis de GNL para comparación, que no es parte de la expresión de campo en sí.

+1

$ {header.type == 'widget'} no funciona. Use $ {header.type} == 'widget' como lo menciona Dhiraj. – jaks