2016-08-26 28 views
0
public class AddingToCache extends RouteBuilder { 
    public void configure() { 
      from("jms:cacheTest") 
      .log("START") 
      .setHeader("CamelCacheOperation", constant("CamelCacheAdd")) 
      .setHeader("CamelCacheKey", constant("Custom_key")) 
      .process(new Processor() { 
       @Override 
       public void process(Exchange exchange) throws Exception { 
        exchange.getOut().setBody("${body.customerDetails.firstName}"); 
       } 
      }) 
      .log("starting ...") 
      .to("cache://cache1?maxElementsInMemory=1000&eternal=true") 
      .to("direct:next"); 
    } 
} 

我試圖用駱駝緩存首次和不斷收到錯誤未指定找到任何指向如何解決這個問題的東西。CamelCacheOperation頭的消息

回答

0

在處理器方面,你應該在發生變異的消息,現有的,否則如果你使用OUT,那麼你需要拷貝過來頭等等。參見本FAQ更多細節:http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html

如做

public void process(Exchange exchange) throws Exception {      
    exchange.getIn().setBody("${body.customerDetails.firstName}"); 
} 

並且介意這會將身體設置爲一個字符串,而不是POJO的名字。爲了達到這個目的,你需要使用簡單的語言,或者將主體作爲POJO並使用Java代碼來調用getCustomerDetails .. getFirstName等等。但那是另一個問題。

+0

謝謝克勞斯的回答!它正確地解決了我的問題! – Sammy65