首先,是的,我已经搜索过了,并且,是的,我已经阅读了每个人都指向的同一份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()是用于关闭choice和split之类的内容,而endChoice()是用于关闭像when和otherwise这样的choice选项。实际上,后者看起来更像是返回ChoiceDefinition的end()。这使名称更好了一些。
但是,如果我删除标记为“close inner choice block”的end(),这意味着我会继续到下一行的endChoice()。那么这是否会关闭内部choice块呢?考虑到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
这是在Camel中处理这种情况的方式吗?还是我只是错过了更简单的方法?感谢您的时间。
choice - when
块。 - Muhammad Arslan Akhtar