8
votes

Exemple de prédicat de chameau dans XML DSL

Comment puis-je implémenter l'exemple de prédicat suivant donné au printemps 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();


0 commentaires

3 Réponses :


6
votes

Comme ceci:

<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>


4 commentaires

Le contexte d'application de printemps n'a pas d'attribut de nom dans l'en-tête et n'existe pas du tout.


Quels sont vos versions de chameaux et de printemps?


En tout cas, vous pouvez essayer cela dans au lieu du prédicat: $ {header.type == 'wombat'}


La syntaxe sur celui-ci est fausse. Regardez la réponse de Dhiraj.



6
votes

L'élément simple requis (voir réponse acceptée ) est

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


1 commentaires

$ {header.type == 'widget'} ne fonctionne pas. Utilisez $ {header.type} == 'widget' comme mentionné par Dhiraj.



0
votes

Si l'objectif est d'utiliser un prédicat dans le printemps XML DSL, cela serait plus approprié -

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:camel="http://camel.apache.org/schema/spring"
xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

<camel:camelContext trace="true">
    <camel:route>
        <camel:from uri="jms:queue:order" />
        <camel:filter>
            <camel:method ref="myPredicate" />
            <to uri="bean:widgetOrder"/>
        </camel:filter>
    </camel:route>
</camel:camelContext>

<bean id="myPredicate" class="MyPredicate"/>
</beans> 


0 commentaires