2016-04-26 15 views

回答

1

沒有區別,都做同樣的工作。

使用java DSL,您可以將匿名內部類與進程語法放在一起。

from("direct:demo").process(new Processor() { 
    public void process(Exchange exchange) throws Exception { 
     // some stuff 
    } 
}).to("mock:demoEnd"); 

過程語法還可以提高代碼的可讀性:

<route id="sample"> 
    <from uri="direct:demo"/> 
    <process ref="firstProcessor"/> 
    <to uri="mock:otherRoute"/> 
    <process ref="secondProcessor"/> 
    <to uri="mock:endTest"/> 
</route> 

Vs的

<route id="sample"> 
    <from uri="direct:demo"/> 
    <to uri="bean:firstProcessor"/> 
    <to uri="mock:otherRoute"/> 
    <to uri="bean:secondProcessor"/> 
    <to uri="mock:endTest"/> 
</route> 
2

如果你的bean是org.apache.camel.Processor的實現則沒有實際的區別。但是,使用bean binding可以提供更大的靈活性。除其他bean的

  • 沒有實現org.apache.camel.Processor
  • 可以提供任何數量的方法來調用
  • 用任意的方法簽名
  • 方法的參數值可以使用註解如Exchange轉移org.apache.camel.Body org.apache.camel.Header

使用bean和bean綁定有點像類固醇上的處理器。

相關問題