我希望有
_ 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()使得它将第二个()作为内部选择的扩展.它不是.
我已经找到了解决方法,将第二个选项放在子路径中并将“direct:SUB_ROUTE”放入其中,但如果可以的话,我更愿意使用上面概述的平面结构.有没有办法在选择中实现选择,还是只是Java DSL的限制?