迁移 Apache Camel
迁移 Apache Camel
摘要
前言 复制链接链接已复制到粘贴板!
向红帽构建的 Apache Camel 文档提供反馈
要报告错误或改进文档,请登录您的红帽 JIRA 帐户并提交问题。如果您没有红帽 JIRA 帐户,系统会提示您创建一个帐户。
流程
- 点击以下链接 创建 ticket
- 在 Summary 中输入问题的简短描述。
- 提供有关描述中问题或功能增强的详细描述。包括一个 URL,以在文档中发生问题。
- 点 Submit 创建问题并将其路由到适当的文档团队。
第 1 章 迁移 Apache Camel 复制链接链接已复制到粘贴板!
1.1. 关于 Camel 迁移指南 复制链接链接已复制到粘贴板!
本指南详细介绍了在迁移应用程序时必须考虑的 Apache Camel 组件中的更改。本指南提供有关以下更改的信息:
- 支持的 Java 版本
- 对 Apache Camel 组件和已弃用组件的更改
- 对 API 和已弃用的 API 的更改
- EIP 更新
- 更新了追踪和健康检查
1.2. 迁移到 Apache Camel 4 复制链接链接已复制到粘贴板!
本节提供了可帮助您将 Apache Camel 应用程序从版本 3.20 或更高版本迁移到 4.0 的信息。
有关单个版本的详情,请参考:
有关如何升级 Apache Camel Quarkus 的详情,请参考:
1.2.1. Java 版本 复制链接链接已复制到粘贴板!
Apache Camel 4 支持 Java 17。丢弃了对 Java 11 的支持。
1.2.2. 删除的组件 复制链接链接已复制到粘贴板!
以下组件已被删除:
| 组件 | 备用组件 |
|---|---|
| camel-any23 | none |
| camel-atlasmap | none |
| camel-atmos | none |
| camel-caffeine-lrucache | camel-cache, camel-ignite, camel-infinispan |
| camel-cdi | camel-spring-boot, camel-quarkus |
| camel-corda | none |
| camel-directvm | camel-direct |
| camel-dozer | camel-mapstruct |
| camel-elasticsearch-rest | camel-elasticsearch |
| camel-gora | none |
| camel-hbase | none |
| camel-hyperledger-aries | none |
| camel-iota | none |
| camel-ipfs | none |
| camel-jbpm | none |
| camel-jclouds | none |
| camel-johnzon | camel-jackson, camel-fastjson, camel-gson |
| camel-microprofile-metrics | camel-micrometer, camel-opentelemetry |
| camel-milo | none |
| camel-opentracing | camel-micrometer, camel-opentelemetry |
| camel-rabbitmq | spring-rabbitmq-component |
| camel-rest-swagger | camel-openapi-rest |
| camel-restdsl-swagger-plugin | camel-restdsl-openapi-plugin |
| camel-resteasy | camel-cxf, camel-rest |
| camel-solr | none |
| camel-spark | none |
| camel-spring-integration | none |
| camel-swagger-java | camel-openapi-java |
| camel-websocket | camel-vertx-websocket |
| camel-websocket-jsr356 | camel-vertx-websocket |
| camel-vertx-kafka | camel-kafka |
| camel-vm | camel-seda |
| camel-weka | none |
| camel-xstream | camel-jacksonxml |
| camel-zipkin | camel-micrometer, camel-opentelemetry |
1.2.3. 日志记录 复制链接链接已复制到粘贴板!
Camel 4 已将日志记录 facade API slf4j-api 从 1.7 升级到 2.0。
1.2.4. JUnit 4 复制链接链接已复制到粘贴板!
所有基于 JUnit 4.x 的 camel-test 模块已被删除。现在,所有测试模块都使用 JUnit 5。
1.2.5. API 更改 复制链接链接已复制到粘贴板!
以下 API 已被弃用并从版本 4 中删除:
-
org.apache.camel.ExchangePattern已删除InOptionalOut。 -
从
CamelContext中移除getEndpointMap ()方法。 -
删除了
@FallbackConverter,因为您应该改为使用@Converter (fallback = true)。 -
删除了
@EndpointInject、@Produce和@Consume上的uri属性,因为您应该改为使用value(默认)。例如,@Produce (uri = "kafka:cheese")应改为@Produce ("kafka:cheese") -
删除了
@UriEndpoint上的标签,因为您应该改为使用category。 -
删除了
ProducerTemplate中的所有asyncCallback方法。改为使用asyncSend或asyncRequest。 -
Removed
org.apache.camel.spi.OnCamelContextStart.Useorg.apache.camel.spi.OnCamelContextStartinginstead. -
Removed
org.apache.camel.spi.OnCamelContextStop.Useorg.apache.camel.spi.OnCamelContextStoppinginstead. -
将
org.apache.camel.ExtendedCamelContext与org.apache.camel.CamelContext分离。 -
将
org.apache.camel.CamelContext中的adapt ()替换为getCamelContextExtension -
将
org.apache.camel.ExtendedExchange与org.apache.camel.Exchange分离。 -
将
org.apache.camel.ExtendedExchange中的adapt ()替换为getExchangeExtension -
Exchange failure 处理状态已从定义为
ExchangePropertyKey.FAILURE_HANDLED的属性移到 ExtendedExchange 的成员,可以通过 'isFailureHandled ()'method 访问。 -
从
org.apache.camel.util.concurrent.ThreadPoolRejectedPolicy中删除Discard和DiscardOldest。 -
删除了
org.apache.camel.builder.SimpleBuilder。在一些情况下,主要在 Camel 中与 Java DSL 进行内部使用。 -
将
org.apache.camel.support.IntrospectionSupport移到camel-core-engine仅用于内部使用。最终用户应使用org.apache.camel.spi.BeanInspection替代。 -
从
org.apache.camel.catalog.CamelCatalog删除了archetypeCatalogAsXml方法。 -
org.apache.camel.health.HealthCheck方法是Liveness,现在默认为false,而不是true。 -
向
org.apache.camel.StreamCache添加了位置方法。 -
从接口
org.apache.camel.main.Listener配置的方法已被删除 -
org.apache.camel.support.EventNotifierSupportabstract 类现在实现了CamelContextAware。 -
CamelContext上的dumpRoutes类型已从boolean改为String,以允许指定 xml 或 yaml。
org.apache.camel.support.PluginHelper 可让您轻松访问各种扩展和上下文插件,之前在 CamelContext 中直接从 CamelContext 中提供。
1.2.6. EIP 更改 复制链接链接已复制到粘贴板!
-
删除了每个 EIP 上 <
;description> 的lang属性。 -
InOnly和InOutEIPs 已被删除。反之,使用SetExchangePattern或To,您可以在其中指定要使用的交换模式。
1.2.6.1. poll Enrich EIP 复制链接链接已复制到粘贴板!
轮询端点 URI 现在作为属性存储在 Exchange (使用键 CamelToEndpoint)上,与所有其他 EIP 一样。在 URI 存储为消息标头之前。
1.2.6.2. CircuitBreaker EIP 复制链接链接已复制到粘贴板!
camel-resilience4j 中的以下选项错误地没有定义为属性:
| 选项 |
| bulkheadEnabled |
| bulkheadMaxConcurrentCalls |
| bulkheadMaxWaitDuration |
| timeoutEnabled |
| timeoutExecutorService |
| timeoutDuration |
| timeoutCancelRunningFuture |
这些选项没有以 YAML DSL 的形式公开,在您需要迁移的 XML DSL 中:
改为使用以下属性:
<circuitBreaker>
<resilience4jConfiguration timeoutEnabled="true" timeoutDuration="2000"/>
...
</circuitBreaker>
<circuitBreaker>
<resilience4jConfiguration timeoutEnabled="true" timeoutDuration="2000"/>
...
</circuitBreaker>
1.2.7. XML DSL 复制链接链接已复制到粘贴板!
在路由或节点上设置描述的 <description> 已从元素改为属性。
Example
<route id="myRoute" description="Something that this route do"> <from uri="kafka:cheese"/> ... </route>
<route id="myRoute" description="Something that this route do">
<from uri="kafka:cheese"/>
...
</route>
1.2.8. type Converter 复制链接链接已复制到粘贴板!
String → java.io.File converter 已删除。
1.2.9. Tracing 复制链接链接已复制到粘贴板!
Tracer 和 Backlog Tracer 不再包含由 Rest DSL 或 route templates 或 Kamelets 创建的路由的内部追踪事件。您可以通过在 tracer 中设置 traceTemplates=true 来打开它。
Backlog Tracer 已被改进并 修复了 跟踪消息标头(也流传输类型)。这意味着,以前类型为 InputStream 的标头在之前没有被跟踪,但现在被包含。这可能意味着标头流位于末尾,之后记录标头,因为标头值为空。
1.2.10. UseOriginalMessage / UseOriginalBody 复制链接链接已复制到粘贴板!
当在 OnException,OnCompletion 或 error handlers 中启用了 useOriginalMessage 或 useOriginalBody 时,原始消息正文会被明确复制,如果可能转换为 StreamCache,则在访问时可以重新读取正文。在以前的版本中,原始正文没有转换为 StreamCache,这可能会导致正文无法读取,或者流已被关闭。
1.2.11. Camel Health 复制链接链接已复制到粘贴板!
现在,健康检查默认只是开箱即用的就绪度检查。Camel 提供了 CamelContextCheck 作为就绪度和存活度检查,因此每个开箱即用至少有一个。默认情况下,只启用基于使用者的健康检查。
1.2.11.1. 制作者健康检查 复制链接链接已复制到粘贴板!
选项 camel.health.components-enabled 已重命名为 camel.health.producers-enabled。
有些组件(特定 AWS)也为生成者提供了健康检查;在 Camel 3.x 中,这些健康检查无法正常工作,并在源中禁用。要在 Camel 4 中继续这一行为,禁用基于制作者的健康检查。
请注意,camel-kafka 附带了基于生成者的健康检查,在 Camel 3 中可以正常工作,因此这个更改在 Camel 4 中意味着禁用此健康检查。
您需要 全局启用制作者健康检查,如 application.properties 中:
camel.health.producers-enabled = true
camel.health.producers-enabled = true
1.2.12. JMX 复制链接链接已复制到粘贴板!
Camel 现在还包括用于 doCatch 的 MBeans,并在处理器 MBeans 的树中进行最终 操作。
ManagedChoiceMBean 已将 choiceStatistics 重命名为 extendedInformation。ManagedFailoverLoadBalancerMBean 已重命名为 exceptionStatistics to extendedInformation。
CamelContextMBean 和 CamelRouteMBean 删除了方法 dumpRouteAsXml (布尔值 resolvePlaceholders,布尔值 resolveDelegateEndpoints)。
1.2.13. YAML DSL 复制链接链接已复制到粘贴板!
向后兼容模式 Camel 3.14 或更早的模式,允许以子到 路由的 子步骤已被删除。
新语法为:
- route:
from:
uri: "direct:info"
steps:
- log: "message"
- route:
from:
uri: "direct:info"
steps:
- log: "message"
1.2.14. backlog Tracing 复制链接链接已复制到粘贴板!
选项 backlogTracing=true 现在会自动启用,以便在启动时启动 tracer。在之前的版本中,tracer 仅适用于,之后必须手动启用。可以通过设置 backlogTracingStandby=true 来归档旧行为。
将以下类从 .camel.spi.BacklogTracerEventMessage 移到 camel-management-api.management.mbean.BacklogTracerEventMessage 中的 org.apachecamel-api JAR 中的 org.apache.camel.spi.BacklogTracerEventMessage。
org.apache.camel.impl.debugger.DefaultBacklogTracerEventMessage 已重构为接口 org.apache.camel.spi.BacklogTracerEventMessage,其中包含一些有关追踪消息的详情。例如,Camel 现在捕获了一个包含输入和输出(如果 InOut)消息的 第一个和最后一个 trace。
1.2.15. XML serialization 复制链接链接已复制到粘贴板!
改进了使用 ModelToXMLDumper 的默认 xml 序列化功能,现在使用 camel-xml-io 模块中的生成的 xml serializer,而不是来自 camel-jaxb 的 JAXB。
1.2.16. OpenAPI Maven 插件 复制链接链接已复制到粘贴板!
camel-restdsl-openapi-plugin Maven 插件现在使用 platform-http 作为生成的 Rest DSL 代码中的默认其余组件,因为它是更好的默认组件,它可用于 Quarkus。
1.2.17. 组件更改 复制链接链接已复制到粘贴板!
1.2.17.1. 类别 复制链接链接已复制到粘贴板!
org.apache.camel.Category 的 enums 数量已从 83 减少到 37,这意味着使用删除的值的自定义组件需要选择其中一个剩余值。我们这样做以整合 Camel 社区中所有组件的类别数。
1.2.17.2. camel-openapi-rest-dsl-generator 复制链接链接已复制到粘贴板!
这个 dsl-generator 已将底层模型类(apicurio-data-models)从 1.1.27 更新至 2.0.3。
1.2.17.3. camel-atom 复制链接链接已复制到粘贴板!
camel-atom 组件已将第三方 atom 客户端从 Apache Abdera 改为 RSSReader。这意味着 feed 对象已从 org.apache.abdera.model.Feed 改为 com.apptasticsoftware.rssreader.Item。
1.2.17.4. camel-azure-cosmosdb 复制链接链接已复制到粘贴板!
itemPartitionKey 已更新。现在,它是一个不是 PartitionKey 的 String。CAMEL-19222 中的更多详细信息。
1.2.17.5. camel-bean 复制链接链接已复制到粘贴板!
当使用 method 选项引用特定方法并使用参数类型和值时,例如 :"bean:myBean?method=foo ( 任何类类型必须使用 com.foo.MyOrder, true) ",.class 语法,即 com.e.foo.MyOrder now be com.foo.MyOrder.class。
Example
"bean:myBean?method=foo(com.foo.MyOrder.class, true)"
"bean:myBean?method=foo(com.foo.MyOrder.class, true)"
这也适用于 String, int 等 Java 类型。
"bean:myBean?method=bar(String.class, int.class)"
"bean:myBean?method=bar(String.class, int.class)"
1.2.17.6. camel-box 复制链接链接已复制到粘贴板!
从 Box Java SDK v2 升级到 v4,这有一些方法签名更改。获取文件缩略图的方法不再可用。
1.2.17.7. camel-caffeine 复制链接链接已复制到粘贴板!
keyType 参数已被删除。现在,缓存的 Key 将仅为 String 类型。CAMEL-18877 中的更多信息。
1.2.17.8. camel-fhir 复制链接链接已复制到粘贴板!
底层 hapi-fhir 库已从 4.2.0 升级到 6.2.4。只有 Delete API 方法已更改,现在返回 ca.uhn.fhir.rest.api.MethodOutcome 而不是 org.hl7.fhir.instance.model.api.IBaseOperationOutcome。有关底层更改的详细列表,请参阅 hapi-fhir (在 Camel 中使用 hapi-fhir 客户端)。
1.2.17.9. camel-google 复制链接链接已复制到粘贴板!
基于 API 的组件 camel-google-drive,camel-google-calendar,camel-google-sheets 和 camel-google-mail 已从 Google Java SDK v1 升级到 v2 以及最新的 API 修订。camel-google-drive 和 camel-google-sheets 有一些 API 方法更改,但其他 API 方法与以前相同。
1.2.17.10. camel-http 复制链接链接已复制到粘贴板!
组件已升级至使用 Apache HttpComponents v5,它对配置底层客户端的方式有影响。有 4 个不同的超时(connectionRequestTimeout,connectTimeout , so Timeout 和 responseTimeout),而不是最初 3 (connectionRequestTimeout,connectTimeout 和 socketTimeout),以及其中一些的默认值已更改。详情请参考文档。
请注意,socketTimeout 已从 HttpClient 的可能配置参数中删除,改为使用 responseTimeout。
最后,选项 soTimeout 以及 socket Config 中包含的任何参数(需要以 httpConnection 前缀)作为前缀,包括在 HttpClientBuilder 和 RequestConfig 中定义的参数的其余部分需要以 httpClient. 前缀。
1.2.17.11. camel-http-common 复制链接链接已复制到粘贴板!
org.apache.camel.http.common.HttpBinding 中的 API 已被更改为更易重复利用。parseBody 方法现在在 HttpServletRequest 中取为输入参数。并且所有 HttpMessage 都已更改为通用 消息类型。
1.2.17.12. camel-kubernetes 复制链接链接已复制到粘贴板!
io.fabric8:kubernetes-client 库已被升级,一些已弃用的 API 用量已被删除。之前带有 replace 前缀的操作现在带有 update 前缀。
例如,replaceConfigMap 现在是 updateConfigMap,replacePod 现在是 updatePod 等。类 KubernetesOperations 中对应的常量也被重命名。REPLACE_CONFIGMAP_OPERATION 现在是 UPDATE_CONFIGMAP_OPERATION,REPLACE_POD_OPERATION 现在是 UPDATE_POD_OPERATION 等。
1.2.17.13. camel-web3j 复制链接链接已复制到粘贴板!
camel-web3j 将 web3j JAR 从 3.x 升级到 5.0,它有很多 API 更改,因此不再提供一些之前的 API 调用。
1.2.17.14. camel-main 复制链接链接已复制到粘贴板!
以下常量已从 BaseMainSupport / MainConstants 移到 :
Main Constants
| 旧名称 | 新名称 |
|---|---|
| Main.DEFAULT_PROPERTY_PLACEHOLDER_LOCATION | MainConstants.DEFAULT_PROPERTY_PLACEHOLDER_LOCATION |
| Main.INITIAL_PROPERTIES_LOCATION | MainConstants.INITIAL_PROPERTIES_LOCATION |
| Main.OVERRIDE_PROPERTIES_LOCATION | MainConstants.OVERRIDE_PROPERTIES_LOCATION |
| Main.PROPERTY_PLACEHOLDER_LOCATION | MainConstants.PROPERTY_PLACEHOLDER_LOCATION |
1.2.17.15. camel-micrometer 复制链接链接已复制到粘贴板!
指标已重命名为遵循 Micrometer 命名约定。
| 旧名称 | 新名称 |
| CamelExchangeEventNotifier | camel.exchange.event.notifier |
| CamelExchangesFailed | camel.exchanges.failed |
| CamelExchangesFailuresHandled | camel.exchanges.failures.handled |
| CamelExchangesInflight | camel.exchanges.external.redeliveries |
| CamelExchangesSucceeded | camel.exchanges.succeeded |
| CamelExchangesTotal | camel.exchanges.total |
| CamelMessageHistory | camel.message.history |
| CamelRoutePolicy | camel.route.policy |
| CamelRoutePolicyLongTask | camel.route.policy.long.task |
| CamelRoutesAdded | camel.routes.added |
| CamelRoutesRunning | camel.routes.running |
1.2.17.16. camel-jbang 复制链接链接已复制到粘贴板!
命令 camel 依赖项 已重命名为 camel 依赖项。
在 Camel JBang 的 init 的 -dir 参数中,并运行 目标已重命名为需要 2 dashes-- dir,就像所有其他选项一样。
camel stop 命令现在默认停止所有正在运行的集成( option-- all 已被删除)。
Placeholders 替换 被修改为使用 #name 而不是 $name 语法。
1.2.17.17. camel-openapi-java 复制链接链接已复制到粘贴板!
camel-openapi-java 组件已改为使用 io.swagger.v3 库,而不是 io.apicurio.datamodels。因此,公共方法 org.apache.camel.openapi.RestOpenApiReader.read ()的返回类型现在为 io.swagger.v3.oas.models.OpenAPI 而不是 io.apicurio.datamodels.openapi.models.OasDocument。当解析 OpenAPI 2.0 (swagger)规格时,swagger parser 会自动升级到 OpenAPI 3.0.x。此版本还支持 OpenAPI 3.1.x 规格。
1.2.17.18. camel-optaplanner 复制链接链接已复制到粘贴板!
camel-optaplanner 组件已改为使用 SolverManager。如果您在 Camel 3 中使用 SoverManager,则不再需要 Route 中的布尔值 useSolverManager。弃用的 ProblemFactChange 已被 ProblemChange 替代。
新的 URI 路径为:
from("optaplanner:myProblemName")
.to("...")
from("optaplanner:myProblemName")
.to("...")
您可以通过两种方式传递 Optaplanner SolverManager :
- as #parameter
- 作为标头
在 Quarkus 上运行 camel-optaplanner 时,请使用 Quarkus 方法创建 SolverManager。
您可以通过提供 XML 配置文件,迁移旧的 Camel Optaplanner 路由,它允许 Camel Optaplanner 处理为这些传统路由创建 SolverManager :
提供 Optaplanner Routes XML 配置文件
from("optaplanner:myProblemName?configFile=PATH/TO/CONFIG.FILE.xml")
.to("...")
from("optaplanner:myProblemName?configFile=PATH/TO/CONFIG.FILE.xml")
.to("...")
- 注意
- 解决守护进程解决方案应该被迁移为使用 SolverManager。
1.2.17.19. camel-platform-http-vertx 复制链接链接已复制到粘贴板!
如果路由或消费者暂停,则现在返回 http 状态 503,而不是 404。
1.2.17.20. camel-salesforce 复制链接链接已复制到粘贴板!
生成的 DTOs 中的 blob 字段的属性名称不再有 'Url' affixed。例如,ContentVersionUrl 属性现在是 ContentVersion。
1.2.17.21. camel-slack 复制链接链接已复制到粘贴板!
默认延迟(在 slack consumer 上)从 0.5s 改为 10s,以避免 Slack 通常的速率限制。
1.2.17.22. camel-micrometer-starter 复制链接链接已复制到粘贴板!
uri 标签现在是静态的,而不是动态(默认),因为带有动态值的 URI 而导致潜在的标签太多。这可以通过设置 camel.metrics.uriTagDynamic=true 来再次启用。
1.2.17.23. camel-platform-http-starter 复制链接链接已复制到粘贴板!
platform-http-starter 已从使用 camel-servlet 改为直接使用 HTTP 服务器。因此,所有 HTTP 端点不再带有 servlet context-path 前缀(默认为 camel)。
例如:
HTTP 端点
from("platform-http:myservice")
.to("...")
from("platform-http:myservice")
.to("...")
可以使用 http://localhost:8080/myservice 调用端点,因为不使用 context-path。
platform-http-starter 也可用于 Rest DSL。
如果路由或消费者暂停,则现在返回 http 状态 503,而不是 404。
1.2.17.24. camel-twitter 复制链接链接已复制到粘贴板!
camel-twitter 组件已更新为使用 author4j 版本 4.1.2,它已移动了几个类所使用的 软件包。如果访问某些与 twitter 相关的数据,如 Twit 状态,您需要将 twitter4j.Status 中使用的软件包更新为 twitter4j.v1.Status。
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。