在每个路由上使用end()是最佳实践吗?
以下作品:
from("jms:some-queue")
.beanRef("bean1", "method1")
.beanRef("bean2", "method2")
这也是
from("jms:some-queue")
.beanRef("bean1", "method1")
.beanRef("bean2", "method2")
.end()
最佳答案
不! 调用end()
以“结束” Camel 路线不是最佳实践,不会产生任何功能上的好处。
对于诸如to()
,bean()
或log()
的常见ProcessorDefinition函数,它仅导致对endParent()方法的调用,正如从 Camel 源代码中可以看到的那样,该方法几乎没有做:public ProcessorDefinition<?> endParent() { return this;}
一旦调用了开始于它们自己的块的处理器定义,并且最著名的包括TryDefinitions
aka doTry()
和ChoiceDefinitions
aka choice()
,还要众所周知的函数,例如split(), loadBalance(), onCompletion()
或recipientList()
,就需要对end()的调用。