在每个路由上使用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()的调用。

10-02 03:54