java - 在 Talend 路由中使用特定版本的 Bean

标签 java apache-camel talend

我正在使用 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 的多个版本,请尝试复制带有版本号后缀的它,例如 V1V2 等。这将使所有版本都不同可在路由的类路径中访问,您可以将它们引用为 beans.MyBeanV1beans.MyBeanV2 等。

关于java - 在 Talend 路由中使用特定版本的 Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60451704/

相关文章:

java - Apache 弗林克 : How to count the total number of events in a DataStream

java - 具有相同 PrimaryKey 和foreignKey 的 OneToOne

java - Camel Rest 到 dB 查询,返回错误响应

apache-camel - 如何使用不同的属性占位符多次部署 Camel /蓝图服务

linux - 将目录更改为 bash 中父/调用脚本的路径

amazon-web-services - Amazon Redshift 中的 ETL 与 ELT

java - IBM MQ v8 和 Glassfish 本地设置端口配置问题

java - ActiveMQ RedeliveryPolicy 未设置

hadoop - 在 Talend 中实现 UDF 和 Pig Script 逻辑

java - 如何在android中的OpenWeatherMap api中更改描述语言