gpt4 book ai didi

apache-camel - Camel Java DSL 选择中的选择

转载 作者:行者123 更新时间:2023-12-02 21:50:05 25 4
gpt4 key购买 nike

我想要

_ 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”放入其中,但如果可以的话,我更愿意使用上面概述的更简单的结构。有没有办法实现 Choices in Choices 或者这只是 Java DSL 的限制?

最佳答案

not putting in the end() makes it treat the second otherwise() as an extension of the inner-choice. Which it isn't.

你确定吗?事实上,我认为从那里删除 end() 应该可以解决您的问题。 endchoice() 足以指示内部选择结构的结束。

我确实尝试了一个示例代码,它工作正常..

谢谢!

关于apache-camel - Camel Java DSL 选择中的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15394589/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com