骆驼结束与结束选择 - 不是通常的查询
首先,是的,我已经搜索过了,是的,我阅读了每个文档指向的同一个Apache文档。:-)我认为有一点混乱,我认为我知道一个答案,所以让我列出一个我认为正确的例子,然后用我认为的答案来跟随它。谢谢。哦,我确实知道一些endChoice()行不是严格必要的,Camel会弄清楚,但我喜欢干净利落地描绘块,除非有理由不使用它们。
.choice()
.when(X1)
// do stuff
.choice()
.when(Y)
//do more stuff
.endChoice() // close inner when block
.end() // close inner choice block
.endChoice() // close first outer when
.when(X2)
// do other stuff
.endChoice() // close second outer when
.end() // close outer choice
所以,我最初对API的看法是,我认为end()用于关闭选择和拆分之类的东西,而endChoice()用于关闭选择选项,如何时和其他。看起来后者实际上是返回 ChoiceDefinition 的 end()。这使得这个名字更好一点。
但是,如果我去掉标记为“关闭内部选择块”的end(),这意味着我继续下一行,一个endChoice()。这是否关闭了内部选择块?鉴于此,when(X2) 仍然在 when(X1) 块中。所以,我认为我需要用endChoice()替换end()而不是删除它。因此,结果将如下所示:
.choice()
.when(X1)
// do stuff
.choice()
.when(Y)
//do more stuff
.endChoice() // close inner when block
.endChoice() // close inner choice block
.endChoice() // close first outer when
.when(X2)
// do other stuff
.endChoice() // close second outer when
.end() // close outer choice
那么,这是在骆驼中处理这个问题的方法吗?还是有更简单的方法让我错过了?感谢您抽出宝贵时间接受采访。