1.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 的红帽构建的 Apache Camel 时有关升级 Camel 的信息。

1.3.1. Java 版本

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

1.3.1.1. JDK 11 中删除了 JAXB

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

1.3.2. camel-core 的 Modularization

在 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 除外,因此不需要迁移。

1.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

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

删除了对多个 CamelContexts 的支持,建议并对每个部署有一个 CamelContext。因此,删除了不同 Camel 注解上的 context 属性,如 @EndpointInject@Produce@Consume 等。

1.3.5. 弃用的 API 和组件

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

1.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
不再支持 producer (已移除)。改为使用 camel-http 组件。
twitter-streaming
删除了因为它依赖于已弃用的 Artistic Streaming API,因此不再起作用。

1.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 2 的组件软件包。支持的方案现在是 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

1.3.6. 对 Camel 组件的更改

1.3.6.1. Mock 组件

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

1.3.6.2. ActiveMQ

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

1.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
注意

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

1.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

1.3.6.4.1. Camel CXF 更改了命名空间

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

表 1.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 中。

1.3.6.5. FHIR

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

1.3.6.6. Kafka

camel-kafka 组件已删除了 bridgeEndpointcircularTopicDetection 选项,因为组件充当 Camel 2.x 的桥接。换句话说,camel-kafka 将从端点 uri 中发送消息到主题。要覆盖它,请使用带有新主题的 KafkaConstants.OVERRIDE_TOPIC 标头。请参阅 camel-kafka 组件文档以了解更多信息。

1.3.6.7. telegram

camel-telegram 组件已将身份验证令牌从 uri-path 移到查询参数,如 migrate

telegram:bots/myTokenHere

to

telegram:bots?authorizationToken=myTokenHere

1.3.6.8. JMX

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

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

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

1.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 支持。如果使用 xslt 构建器,并使用 org.apache.camel.component.xslt.saxon.XsltSaxonBuilder 作为 Saxon 支持。另请注意,allowStax 只在 camel-xslt-saxon 中被支持,因为 JDK XSLT 不支持它。

1.3.6.10. XML DSL 迁移

XML DSL 稍有变化。

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

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

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

1.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.