1.7. 已知问题


有几个与迁移集成路由相关的已知问题及其临时解决方案。这些临时解决方案不是红帽构建的 Apache Camel for Quarkus 的限制,而是迁移过程的一部分。迁移完成后,生成的 Maven 项目可以自定义以满足客户的需求。

1.7.1. Camel K 功能在 Camel for Quarkus 中不可用

一些 Camel K 功能在 Quarkus 或 Camel 中不能作为 quarkus 属性提供。这些功能可能需要额外的配置步骤,以便在红帽构建的 Apache Camel for Quarkus 中构建和部署时获得相同的功能。

1.7.1.1. 所有者 Trait

owner trait 为所有创建的资源设置 kubernetes owner 字段,简化了跟踪谁创建了 kubernetes 资源的过程。

一个 open Quarkus 问题 #13952 请求此功能。

没有临时解决方案来设置所有者字段。

1.7.1.2. 关联性 Trait

节点关联性特征 允许您限制调度集成 pod 运行的节点。

存在一个开放的 Quarkus 问题,请求 此功能。

解决办法是在 maven 软件包步骤后实施后处理任务,将关联性配置添加到 target/kubernetes/openshift.yml 中。

1.7.1.3. PodDisruptionBudget Trait

PodDisruptionBudget trait 允许为集成 pod 配置 PodDisruptionBudget 资源。

Quarkus 中有配置来生成 PodDisruptionBudget 资源。

解决办法是在 maven 软件包步骤后实施后处理任务,将 PodDisruptionBudget 配置添加到 target/kubernetes/openshift.yml 中。

如果集成路由包含 rest 和一个 直接 端点,如下例所示,请验证 pom.xml 是否包含 camel-quarkus-direct 依赖项。如果缺少,您必须添加它。

rest()
    .post("/message")
    .id("rest")
    .to("direct:foo");

from("direct:foo")
    .log("hello");
Copy to Clipboard Toggle word wrap

camel-quarkus-direct 依赖项,以添加到 pom.xml

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-direct</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

1.7.3. Quarkus 构建失败并显示

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Copy to Clipboard Toggle word wrap

客户端不信任服务器证书。因此,您必须将服务器公钥添加到客户端,或信任服务器证书。如果要测试,您可以在 src/main/resources/application.properties 中添加以下属性并重建它。

quarkus.kubernetes-client.trust-certs=true
Copy to Clipboard Toggle word wrap

1.7.4. Camel Jbang 无法导出路由

当路由包含 kamelet 端点时,Camel Jbang 无法导出路由,该端点由 bean 支持。如果端点包含 kamelet,带有属性占位符 {{broker}},且在 kamelet 中有一个 type: " installationclass:org.apache.qpid.jms.jms.JmsConnectionFactory" 来初始化 camel 组件,它可能会失败。

from("direct:jms")
.to("kamelet:jms-amqp-10-sink?remoteURI={{broker}}&destinationName={{queue}}");
Copy to Clipboard Toggle word wrap

此错误由以下错误组成:

org.apache.camel.RuntimeCamelException: org.apache.camel.VetoCamelContextStartException: Failure creating route from template: jms-amqp-10-sink
Caused by: org.apache.camel.VetoCamelContextStartException: Failure creating route from template: jms-amqp-10-sink
Caused by: org.apache.camel.component.kamelet.FailedToCreateKameletException: Error creating or loading Kamelet with id jms-amqp-10-sink (locations: classpath:kamelets,github:apache:camel-kamelets/kamelets)
Caused by: org.apache.camel.FailedToCreateRouteException: Failed to create route jms-amqp-10-sink-1 at: >>> To[jms:{{destinationType}}:{{destinationName}}?connectionFactory=#bean:{{connectionFactoryBean}}]
Caused by: org.apache.camel.ResolveEndpointFailedException: Failed to resolve endpoint: jms://Queue:$%7Bqueue%7D?connectionFactory=%23bean%3AconnectionFactoryBean-1 due to: Error binding property (connectionFactory=#bean:connectionFactoryBean-1)
Caused by: org.apache.camel.PropertyBindingException: Error binding property (connectionFactory=#bean:connectionFactoryBean-1) with name: connectionFactory on bean:
Caused by: java.lang.IllegalStateException: Cannot create bean: #class:org.apache.qpid.jms.JmsConnectionFactory
Caused by: org.apache.camel.PropertyBindingException: Error binding property (remoteURI=@@[broker]@@) with name: remoteURI on bean: org.apache.qpid.jms.JmsConnectionFactory@a2b54e3 with value: @@[broker]@@
Caused by: java.lang.IllegalArgumentException: Invalid remote URI: @@[broker]@@
Caused by: java.net.URISyntaxException: Illegal character in path at index 2: @@[broker]@@
Copy to Clipboard Toggle word wrap

如何修复:

将 kamelet 端点 {{broker}}{{queue}} 中的属性占位符替换为任何值,例如: remoteURI=broker&destinationName=queue。现在,导出该文件,您可以在 src/main/ 目录中的导出路由中添加属性占位符。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat