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 :
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-boondataformat ,camel-linkedin- Linkedin API 不再被支持。
camel-zookeeper-
组件路由策略功能已被删除。使用
ZooKeeperClusterService或camel-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-datasetJAR。 http4-
重命名为
http,它对应于从org.apache.camel.component.http4到org.apache.camel.component.http的组件软件包。支持的方案现在是http和https。 hdfs2-
重命名为
hdfs,它对应于从org.apache.camel.component.hdfs2到org.apache.camel.component.hdfs的组件软件包。支持的方案现在是hdfs。 mina2-
重命名为
mina,它对应于从org.apache.camel.component.mina2到org.apache.camel.component.mina2 的组件软件包。支持的方案现在是mina。 mongodb3-
重命名为
mongodb,它对应于从org.apache.camel.component.mongodb3到org.apache.camel.component.mongodb的组件软件包。支持的方案现在是mongodb。 netty4-http-
已重命名为
netty-http,它对应于从org.apache.camel.component.netty4.http到org.apache.camel.component.netty.http的组件软件包。支持的方案现在是netty-http。 netty4-
重命名为
netty,它对应于从org.apache.camel.component.netty4到org.apache.camel.component.netty的组件软件包。支持的方案现在是netty。 quartz2-
重命名为
quartz,它对应于从org.apache.camel.component.quartz2到org.apache.camel.component.quartz的组件软件包。支持的方案现在是quartz。 rxjava2-
重命名为
rxjava,它对应于从org.apache.camel.component.rxjava2到org.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-soap 和 camel-cxf-transport。
1.3.6.4.1. Camel CXF 更改了命名空间 复制链接链接已复制到粘贴板!
camel-cxf XML 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 组件已删除了 bridgeEndpoint 和 circularTopicDetection 选项,因为组件充当 Camel 2.x 的桥接。换句话说,camel-kafka 将从端点 uri 中发送消息到主题。要覆盖它,请使用带有新主题的 KafkaConstants.OVERRIDE_TOPIC 标头。请参阅 camel-kafka 组件文档以了解更多信息。
1.3.6.7. telegram 复制链接链接已复制到粘贴板!
camel-telegram 组件已将身份验证令牌从 uri-path 移到查询参数,如 migrate
telegram:bots/myTokenHere
telegram:bots/myTokenHere
to
telegram:bots?authorizationToken=myTokenHere
telegram:bots?authorizationToken=myTokenHere
1.3.6.8. JMX 复制链接链接已复制到粘贴板!
如果您只使用 camel-core 作为依赖项运行 Camel 独立,并且您希望开箱即用 JMX,则需要添加 camel-management 作为依赖项。
对于使用 ManagedCamelContext,现在您需要从 CamelContext 获取此扩展,如下所示:
ManagedCamelContext managed = camelContext.getExtension(ManagedCamelContext.class);
ManagedCamelContext managed = camelContext.getExtension(ManagedCamelContext.class);
1.3.6.9. XSLT 复制链接链接已复制到粘贴板!
XSLT 组件已从 camel-core 移到 camel-xslt 和 camel-xslt-saxon。组件被分隔,因此 camel-xslt 用于使用 JDK XSTL 引擎(Xalan),camel-xslt-saxon 是使用 Saxon 时的。这意味着您应该在 Camel 端点 URI 中使用 xslt 和 xslt-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> 改为 < customLoadBalancer>
在 <secureXML> tag 中,XMLSecurity 数据格式将属性 keyOrTrustStoreParametersId 重新命名为 keyOrTrustStoreParametersRef。
& lt;zipFile> 数据格式已重命名为 < 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具有validate和route-coverage目标,用于生成 Camel 项目的报告,如验证 Camel 端点 URI 和路由覆盖报告等。如需更多信息,请参阅 https://camel.apache.org/manual/camel-report-maven-plugin.html。