2012-07-27 17 views
7

İki işlem içeren bir hizmetim var. Benim işlemci çekirdeği içindeApache Deve koşullu yönlendirme

<camel:route id="myRoute"> 
    <camel:from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&amp;synchronous=true" />    
    <camel:bean ref="processor" method="processMessage"/> 
    <camel:to uri="xslt:file:resources/service/2.0.0/UserRegistration.xsl"/> 
    <camel:to uri="cxf:bean:myTargetEndpoint"/> 
</camel:route> 

, benim belirttiğim:

RegisterUser registerUser = exchange.getIn().getBody(RegisterUser.class); 

ben kayıt kullanıcı nesnesini almak

RegisterUser 
UpdateUser 

Ben bir deve hezimet var. Her şey iyi çalışıyor. hizmet işletimi benim belirli fasulye yönlendirmek mesajı istediğiniz RegisterUser ve hizmet işlemi UpdateUser olup olmadığını rota mesajı istiyorsanız

: sorun ben için eg, benim isteği şartlı rota deve istememizdir diğer fasülyeye.

Deve xPath kullanmayı denedim, ancak çalışmıyor gibi görünüyor.

Farklı hedeflere yönlendirmek için deve'yi nasıl ayarlayacağımı araştırıyordum ama hiçbir şey bulamadı. Belki birileri sorunun nerede olabileceğini biliyordur? yerine bunun için XPath camel-simple ifadeler kullanarak

cevap

14

bilgiler. Aradığınız başlık 'operationName' Yani burada

denir

bir örnek:

<camelContext xmlns="http://camel.apache.org/schema/blueprint"> 
    <route id="example"> 
     <from uri="cxf:bean:myListenerEndpoint?dataFormat=POJO&amp;synchronous=true" /> 
     <log message="The expected operation is :: ${headers.operationName}" /> 
     <choice> 
      <when> 
       <simple>${headers.operationName} == 'RegisterUser'</simple> 
        <bean ref="processor" method="processMessage"/> 
       <to uri="xslt:file:resources/service/2.0.0/UserRegistration.xsl"/> 
      </when> 
      <when> 
       <simple>${headers.operationName} == 'UpdateUser'</simple> 
       <!-- Do the update user logic here --> 
       <bean ref="processor" method="updateUser" /> 
      </when> 
     </choice> 
    <to uri="cxf:bean:myTargetEndpoint"/> 
    </route> 
</camelContext> 

(apache koç planı kullanıyor örneği Not - ama bahar için aynı olacaktır, ad alanı dışındakiler)

+0

Bu benim için harika çalışıyor. Tam olarak ihtiyacım olan şey. Teşekkür ederim! :) –

4

deneyin ... mesajın başlığında olacaktır gerekli operasyonun

<when><simple>${body} is 'com.RegisterUser'</simple><to uri="..."/></when> 
İlgili konular