我想要
_ 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的限制?
答案 0 :(得分:8)
没有放入end()使得它将第二个否则()视为内部选择的扩展。它不是。
你确定吗?事实上,我认为从那里删除end()应该可以解决你的问题。 endchoice()足以表示内部选择结构的结束。
我确实尝试了一个示例代码,它工作正常......
谢谢!