使用<process ref =“bean id”>标签或使用<to uri =“bean:id”>来引用处理器有什么区别?

时间:2016-04-26 08:44:29

标签: apache-camel

使用流程标记或使用转换为标记来引用处理器有什么区别?

<route id="sample"><from uri="" /><to uri="bean:mqResponseProcessor" /></route>

<route id="sample"><from uri="" /><process ref="mqResponseProcessor"/></route>

2 个答案:

答案 0 :(得分:2)

如果你的bean是org.apache.camel.Processor的实现,那么没有实际的区别。但是,使用bean binding可以为您提供更大的灵活性。其中豆豆

  • 无需实施org.apache.camel.Processor
  • 可以提供任意数量的方法来调用
  • 使用任意方法签名
  • 方法参数值可以使用org.apache.camel.Body或org.apache.camel.Header等注释从交换中传输

使用bean和bean绑定有点像类固醇处理器。

答案 1 :(得分: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>