2013-12-10 36 views
0

我在我的應用程序中使用駝峯2.8.4。我的應用程序將接收來自隊列的請求,然後該請求將由驗證程序驗證。根據消息的內容,Validator會將請求轉發到不同的目的地。驗證器將是一個POJO bean。目的地將從數據庫中獲得(這是一個MUST)。我更喜歡使用spring dsl for camelContext。駱駝:轉發消息到動態目標(從數據庫)

1. I dont know how to write the validator to forward req to destinations. 
2. Can we use something similar like this 
    <to uri='method=getURI() bean='Validator''> in camelContext 

<camelContext> 
     <route id="route-1"> 
      <from uri="mq:queue:QUEUE"/> 
      <bean ref="Validator" method="validate"/> 
       <!--i would be great if we can use <to uri="dynamicURI-from-database"> here --> 
     </route> 
</camelContext> 

Class Validator{ 
    public void validate(String req){ 
    if (...) 
     //get uri1 from database 
     String uri1=getURI(..); 
     //forward req to uri1 
      ........... 
    else 
     //get uri2 from database 
      String uri2=getURI(...); 
     //forward req to uri2 
      ........... 

    } 

    public String getURI(..){ 
     ...... 
     return uri; 
    } 

}

回答

2

使用dynamic URI功能在運行時產生一個URI。你可以調用一個處理器來交換URI,然後在to子句中使用它。

喜歡的東西:

process(new Procesor() 
    public void process(Exchange exchange){ 
      exchange.setHeader("myURI",someURI); 
}); 

,並在條款

<to uri="${header.myURI}"/>