我正在使用 Talend Open Studio for ESB (7.2.1) 创建 Apache Camel 路由。一个项目中包含多个路由,以及该路由的多个 Bean。
某些路由共享一些 bean,随着时间的推移,路由可能会与最新版本的 bean 不兼容 - 而且这种不兼容性仅在运行时甚至仅在特定情况下才会出现。
所以我的问题是:是否可以指定引用的 bean 的确切版本(因为所有必需的版本都存储在 Talend 项目中)?我认为这可能在 cBean 组件、cBeanRegister 组件、Spring 配置或路由依赖项的配置中实现? - 但没有找到任何相关文档或信息。
我的确切问题是这个异常:
org.apache.camel.component.bean.AmbiguousMethodCallException: Ambiguous method invocations possible: [public static void beans.ArticleGroupHandler.handleGroup(org.apache.camel.Exchange), public static void beans.ArticleGroupHandler.handleNavisionGroups(org.apache.camel.Exchange)].
首先,bean 中仅存在 public static void beans.ArticleGroupHandler.handleGroup(org.apache.camel.Exchange)
方法,因此我使用了 cBean 组件没有方法规范有效。在不同的路由中更新后,添加了方法 public static void beans.ArticleGroupHandler.handleNavisionGroups(org.apache.camel.Exchange)
,并且第一个路由的新构建导致了上述异常执行。
我知道我可以通过指定要使用的确切方法来解决该异常,但我想知道将来是否可以通过指定 bean 版本来规避此类问题。
最佳答案
Talend Bean 版本涉及源版本控制。将其视为 Git 存储库中的标记提交。您只能使用当前版本,该版本是在您构建或发布路线时与您的路线一起编译的。
要在应用程序中支持同一 bean 的多个版本,请尝试复制带有版本号后缀的它,例如 V1
、V2
等。这将使所有版本都不同可在路由的类路径中访问,您可以将它们引用为 beans.MyBeanV1
、beans.MyBeanV2
等。
关于java - 在 Talend 路由中使用特定版本的 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60451704/