发表于2019-11-27 12:27:36 +0800

年初的时候写过一篇有关Camel 3.x 的介绍。 Camel 3.0 在经历了4个里程版本以及3个RC版本之后,发布了3.0正式版。我想现在困扰大家最大的问题就是Camel 3.0 带来哪些变化呢?如果要从Camel 2.x 升级到 Camel 3.x需要注意哪些事情呢? 其实社区开发者一直在更新一份叫做升级指南的文档,里面记录了Camel 3.x的最新修改。 下面我会结合我的理解把重点的内容翻译成中文展现给大家。

JDK支持

Camel 3 开始支持 Java 11, Camel 3 的早期版本还会继续支持Java 8, 但在后续的版本中会根据社区的发展会不再支持Java 8。

在Java 11中, JDK缺省是不带JAXB模块依赖的,所以如果你需要使用XML DSL 或者是camel-jaxb 模块的话,需要在POM中添加相关JAXB的依赖。

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0.1</version>
</dependency>
<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.3.2</version>
</dependency>

Camel-Core模块化

为了更好支持模块化,在Camel 3中, 将原有的camel-core模块分离成了以下12个子模块

使用Maven的用户仍然可以通过采用原有的 camel-core的依赖自动获取以上模块的依赖, 当然你可以通过添加子模块的来减少系统对不必要的class的依赖。 同时我们也将其他在camel-core模块中的组件移出到其他的独立的模块:

CamelContext的变化

应用代码迁移修改

Spring Boot starter Maven 坐标的变化。

在Camel3 中, 有关Spring Boot Starters的 groupId 已经由 org.apache.camel 改变成 org.apache.camel.springboot。 大家升级的时候需要注意这点变化。

Main class

Camel的Main类已经有camel-core转移至camel-main模块中, 所以升级的时候请注意更新相关依赖。

XML DSL修改

删除的组件

Camel3移除了多Camel2已经废弃的组件,例如camel-http, camel-hdfs, camel-mina, camel-mongodb, camel-netty, camel-netty-http, camel-quartz 以及 camel-rxjava,转而由新版本所代替,详细请参加下面的重命名组件。

重命名的组件

以往Camel为了支持多个版本的第三方组件, 在组件名后还加入的版本号, 在Camel3中对这些新版本的组件进行了重命名,将组件名中的版本号去掉,以替换原有的老版本组件。

API变化