3.3. 迁移到 Apache Camel 3


本指南提供有关从 Red Hat Fuse 7 迁移到 Camel 3 的信息

注意

在组件(如模块化和 XML 架构更改)中,Fuse 7 和 Camel 3 之间有重要的区别。详情请查看每个组件部分。

红帽构建的 Apache Camel for Quarkus 支持 Camel 版本 4。本节提供了在将 Red Hat Fuse 7 应用程序迁移到带有 Camel 版本 3 的 Red Hat build of Apache Camel for Quarkus 时升级 Camel 的信息。

3.3.1. Java 版本

Camel 3 支持 Java 17 和 Java 11,但不支持 Java 8。

3.3.1.1. JDK 11 中删除了 JAXB

在 Java 11 中,JAXB 模块已从 JDK 中删除,因此您需要将它们添加为 Maven 依赖项(如果使用 JAXB 时,如使用 XML DSL 或 camel-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>
注意

Java Platform Standard Edition 11 Development Kit (JDK 11)在 Camel 3.x 版本中已弃用,在发行版本 4.x 中不被支持。

3.3.2. camel-core 的模块化

在 Camel 3.x 中,camel-core 已被分成多个 JAR,如下所示:

  • camel-api
  • camel-base
  • camel-caffeine-lrucache
  • camel-cloud
  • camel-core
  • camel-jaxp
  • camel-main
  • camel-management-api
  • camel-management
  • camel-support
  • camel-util
  • camel-util-json

Apache Camel 的 Maven 用户可以继续使用依赖项 camel-core,它对其所有模块有传输依赖项,但 camel-main 除外,因此不需要迁移。

3.3.3. 组件的模块化

在 Camel 3.x 中,一些 camel-core 组件被移到各个组件中。

  • camel-attachments
  • camel-bean
  • camel-browse
  • camel-controlbus
  • camel-dataformat
  • camel-dataset
  • camel-direct
  • camel-directvm
  • camel-file
  • camel-language
  • camel-log
  • camel-mock
  • camel-ref
  • camel-rest
  • camel-saga
  • camel-scheduler
  • camel-seda
  • camel-stub
  • camel-timer
  • camel-validator
  • camel-vm
  • camel-xpath
  • camel-xslt
  • camel-xslt-saxon
  • camel-zip-deflater

3.3.4. 不支持每个应用程序有多个 CamelContexts

对多个 CamelContexts 的支持已被删除,建议每个部署只有一个 CamelContext,并被支持。因此,各种 Camel 注释上的 context 属性(如 @EndpointInject@Produce@Consume 等)已被删除。

3.3.5. 弃用的 API 和组件

Camel 3 中删除了来自 Camel 2.x 的所有已弃用的 API 和组件。

3.3.5.1. 删除的组件

Camel 2.x 中的所有已弃用的组件都在 Camel 3.x 中删除:

camel-http , camel-hdfs , camel-mina , camel-mongodb , camel-netty , camel-netty-http , camel-quartz , camel-restlet , camel-rx , camel-jibx , camel-boon dataformat , camel-linkedin
Linkedin API 不再被支持
camel-zookeeper
组件路由策略功能已删除。使用 ZooKeeperClusterServicecamel-zookeeper-master
camel-jetty
不再支持 制作者 (已被删除)。改为使用 camel-http 组件。
Twitter-streaming
删除,因为它依赖于已弃用的 Twitter Streaming API,且无法正常工作。

3.3.5.2. 重命名组件

在 Camel 3.x 中重命名以下组件。

camel-microprofile-metrics
重命名为 camel-micrometer
test
重命名为 dataset-test,并从 camel-core 移到 camel-dataset JAR。
http4
重命名为 http,它对应于从 org.apache.camel.component.http4org.apache.camel.component.http 的组件软件包。现在,支持的方案只能是 httphttps
hdfs2
重命名为 hdfs,它对应于从 org.apache.camel.component.hdfs2org.apache.camel.component.hdfs 的组件软件包。现在支持的方案是 hdfs
mina2
重命名为 mina,它对应于从 org.apache.camel.component.mina2org.apache.camel.component.mina 的组件软件包。现在支持的方案是 mina
mongodb3
重命名为 mongodb,它对应于从 org.apache.camel.component.mongodb3org.apache.camel.component.mongodb 的组件软件包。现在支持的方案是 mongodb
netty4-http
已重命名为 netty-http,它对应于从 org.apache.camel.component.netty4.httporg.apache.camel.component.netty.http 的组件软件包。现在支持的方案是 netty-http
netty4
重命名为 netty,它对应于从 org.apache.camel.component.netty4org.apache.camel.component.netty 的组件软件包。现在支持的方案是 netty
quartz2
重命名为 quartz,它对应于从 org.apache.camel.component.quartz2org.apache.camel.component.quartz 的组件软件包。现在支持的方案是 quartz
rxjava2
重命名为 rxjava,它对应于从 org.apache.camel.component.rxjava2org.apache.camel.component.rxjava 的组件软件包。
camel-jetty9
重命名为 camel-jetty。现在,支持的方案是 jetty

3.3.6. Camel 组件的更改

3.3.6.1. Mock 组件

mock 组件已从 camel-core 移出。由于其 assertion 子句构建器 上的许多方法已被删除。

3.3.6.2. ActiveMQ

如果您使用 activemq-camel 组件,则应迁移到使用 camel-activemq 组件,其中组件名称已从 org.apache.activemq.camel.component.ActiveMQComponent 改为 org.apache.camel.component.activemq.ActiveMQComponent

3.3.6.3. AWS

组件 camel-aws 被分成多个组件:

  • camel-aws-cw
  • camel-aws-ddb (包含 ddb 和 ddbstreams 组件)
  • camel-aws-ec2
  • camel-aws-iam
  • camel-aws-kinesis (其中包含 kinesis 和 kinesis-firehose 组件)
  • camel-aws-kms
  • camel-aws-lambda
  • camel-aws-mq
  • camel-aws-s3
  • camel-aws-sdb
  • camel-aws-ses
  • camel-aws-sns
  • camel-aws-sqs
  • camel-aws-swf
注意

建议为这些组件添加特定的依赖项。

3.3.6.4. Camel CXF

camel-cxf JAR 已分为 SOAP 与 REST。从 camel-cxf 迁移时,我们建议您从以下列表中选择特定的 JAR。

  • camel-cxf-soap
  • camel-cxf-rest
  • camel-cxf-transport

例如,如果您在 SOAP 中使用 CXF,则在从 camel-cxf 进行迁移时选择 camel-cxf-soapcamel-cxf-transport

3.3.6.4.1. Camel CXF 更改命名空间

camel-cxf XML XSD 模式也更改了命名空间。

表 3.1. 对命名空间的更改
旧命名空间新命名空间

http://camel.apache.org/schema/cxf

http://camel.apache.org/schema/cxf/jaxws

http://camel.apache.org/schema/cxf/camel-cxf.xsd

http://camel.apache.org/schema/cxf/jaxws/camel-cxf.xsd

http://camel.apache.org/schema/cxf

http://camel.apache.org/schema/cxf/jaxrs

http://camel.apache.org/schema/cxf/camel-cxf.xsd

http://camel.apache.org/schema/cxf/jaxrs/camel-cxf.xsd

camel-cxf SOAP 组件被移到一个新的 jaxws 子软件包,即 org.apache.camel.component.cxf 现在是 org.apache.camel.component.cxf.jaws。例如,CxfComponent 类现在位于 org.apache.camel.component.cxf.jaxws

3.3.6.5. FHIR

camel-fhir 组件已将其 hapi-fhir 依赖项升级到 4.1.0。默认 FHIR 版本已改为 R4。因此,如果需要 DSTU3,则必须明确设置它。

3.3.6.6. Kafka

camel-kafka 组件删除了选项 bridgeEndpointcircularTopicDetection,因为组件不再需要,因为组件在 Camel 2.x 上可以正常工作。换句话说,camel-kafka 将从 endpoint uri 发送消息到主题。要覆盖它,请使用带有新主题的 KafkaConstants.OVERRIDE_TOPIC 标头。请参阅 camel-kafka 组件文档以了解更多信息。

3.3.6.7. telegram

camel-telegram 组件已将授权令牌从 uri-path 移到查询参数,如 migrate

telegram:bots/myTokenHere

to

telegram:bots?authorizationToken=myTokenHere

3.3.6.8. JMX

如果您只使用 camel-core 作为依赖项运行 Camel 独立,并且希望开箱即用启用 JMX,则需要将 camel-management 添加为依赖项。

对于使用 ManagedCamelContext,您需要从 CamelContext 获取此扩展,如下所示:

ManagedCamelContext managed = camelContext.getExtension(ManagedCamelContext.class);

3.3.6.9. XSLT

XSLT 组件已从 camel-core 移到 camel-xsltcamel-xslt-saxon。组件被分开,因此 camel-xslt 用于使用 JDK XSTL 引擎(Xalan),camel-xslt-saxon 是使用 Saxon 时的。这意味着,您应该在 Camel 端点 URI 中使用 xsltxslt-saxon 作为组件名称。如果您使用 XSLT 聚合策略,则使用 org.apache.camel.component.xslt.saxon.XsltSaxonAggregationStrategy 进行 Saxon 支持。并使用 org.apache.camel.component.xslt.saxon.XsltSaxonBuilder 进行 Saxon 支持(如果使用 xslt 构建器)。另请注意,只有 camel-xslt-saxon 中也支持 allowStax,因为 JDK XSLT 不支持它。

3.3.6.10. XML DSL 迁移

XML DSL 稍微改变。

自定义负载均衡器 EIP 已从 < custom> 改为 &lt; customLoadBalancer>

<secureXML> tag 中,XMLSecurity 数据格式将属性 keyOrTrustStoreParametersId 重新命名为 keyOrTrustStoreParametersRef

& lt;zipFile& gt; 数据格式已重命名为 < zipfile>

3.3.7. 迁移 Camel Maven 插件

camel-maven-plugin 已分成两个 maven 插件:

camel-maven-plugin
camel-maven-plugin 具有 run 目标,旨在单独运行 Camel 应用程序。如需更多信息,请参阅 https://camel.apache.org/manual/camel-maven-plugin.html
camel-report-maven-plugin
camel-report-maven-plugin 具有 validateroute-coverage 目标,用于生成 Camel 项目报告,如验证 Camel 端点 URI 和路由覆盖报告等。如需更多信息,请参阅 https://camel.apache.org/manual/camel-report-maven-plugin.html
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.