我希望有
_ 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() 正在结束内部和外部选择,我只希望它结束内部选择。
不放入 end() 使其将第二个 else() 视为内部选择的扩展。它不是。
我通过将第二个选择放在子路由中并将“direct:SUB_ROUTE”放入其中找到了解决方法,但如果可以的话,我更愿意使用上面概述的更简单的结构。有没有办法在选择中实现选择,或者这只是 Java DSL 的限制?