I want to have
_ from( A )
_ .split()...
_ .choice() //Choice 1
_ .when( predicate )
_ .process()
_ .choice() // Choice 2
_ .when( x )
_ .to( X )
_ .otherwise()
_ .to( Y )
_ .end() // to terminate inner choice
_ .endchoice() // tell camel we're back in the outer-choice - gets exception
_ .otherwise() // Choice 1
_ .to( Z )
_ .end()
但是在endChoice()函数上我遇到了运行时异常。
java.lang.ClassCastException: org.apache.camel.model.SplitDefinition cannot be cast to org.apache.camel.model.ChoiceDefinition
没有它,我会在编译时出错。
我怀疑end()正在结束内部和外部choice,但我只想结束内部的那个。
不放置end()会使它将第二个otherwise()视为内部选择的扩展。但它并不是。
我已经通过将第二个选择放入子路由并“direct:SUB_ROUTE”进入其中来找到了解决方法,但如果可能的话,我更喜欢使用上面概述的更简单的结构。是否有一种实现选择在选择中的方式,还是这只是Java DSL的限制?