【问题标题】:Can Apache Camel integrate with an old component version?Apache Camel 可以与旧的组件版本集成吗?
【发布时间】:2021-10-21 22:11:39
【问题描述】:

我想知道是否可以将旧版本的 Camel 组件与较新的 Apache Camel 版本的应用程序集成。在我的情况下,我想集成到 Hbase 服务器版本 1.2,它仅受 HBase 客户端 1.2 支持。因此,即使我想使用 3.1 Camel 版本,我也想使用 Camel-HBase 组件的 3.0.1 版本。这是一件好事吗?

或者有什么地方可以看到 Apache Camel 支持的库版本?

【问题讨论】:

    标签: apache-camel hbase apache-camel-3


    【解决方案1】:

    您可以查看 Camel 依赖项 POM 以查找不同组件导入的依赖项的版本。

    请参阅dependencies POM of Camel 3.10.x。你会在里面找到<hbase-version>2.3.1</hbase-version>

    另一个来源是 Maven Central,您可以在其中查看特定 Camel 组件版本的依赖版本。

    请参阅引用 Hbase-client 1.2.6 的 Camel-HBase 3.1.0

    但是,通常无法选择 Camel 版本来匹配特定的组件依赖版本。一般来说,它是反其道而行之。您想要或必须使用已经存在的版本,或者您想要使用当前版本来充分利用框架。

    如果您使用 Camel 3.10.x 构建新应用程序,您将获得 2.3.1 版本的 hbase-client。

    如果较新的 Hbase 客户端版本与 Hbase 1.2 不兼容,则会变得困难。

    • 混合和匹配 Camel 组件版本时会遇到很多问题
    • 即使您可以使用较旧的 Camel 版本构建应用程序,也永远无法升级

    我看到的唯一解决方案是将 Hbase 集成隔离在其自己的(冻结的)应用程序中,使用与您所需的 Hbase 客户端版本相匹配的旧 Camel 版本。

    【讨论】:

    • 我还是不太明白一件事。旧版本不支持 HBase 客户端。选择一个适合的 Camel-HBase jar 版本来适配,不是一件好事吗?
    • 只要你不需要升级你的应用程序就可以了。这就是我提到的孤立的 Hbase 集成。因为你不能做的是在同一个应用程序中混合 Camel 版本。例如使用 camel-core 3.11.0 和 camel-hbase 3.1.0。如果你这样做,你通常会得到非常奇怪的异常。
    • 但这变得非常困难,因为如果我想使用旧的 HBase 集成到新的 Mongo 版本,我可能无法找到包含两个适合组件的适合 Camel 版本.你在这里说的是,Camel 不会让我动态集成不同技术(新旧)的不同版本——只有特定 Camel 版本支持的每个版本?
    • 理论上这是正确的。但是很多技术都提供向后兼容性。对于您的 MongoDB 示例 see here。最新的 mongodb-driver 支持多种服务器版本。
    猜你喜欢
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    相关资源
    最近更新 更多