16.3. 其他 Camel Quarkus 配置


16.3.1. 简单语言

16.3.1.1. 使用 OGNL 表示法

当使用简单语言的 OGNL 表示法时,应使用 camel-quarkus-bean 扩展。

例如,下面简单表达式是访问类型为 Client 的消息正文上的 getAddress() 方法。

---
simple("${body.address}")
---
Copy to Clipboard Toggle word wrap

在这种情况下,另一个应该对 camel-quarkus-bean 扩展进行额外的依赖 ,如下所述。请注意,在原生模式下,可能需要注册一些类来反映。在上例中,需要注册 Client以反映

16.3.1.2. 在原生模式中使用动态类型解析

从简单表达式动态解析类型时,例如:

  • simple("${mandatoryBodyAs(TYPE)}")
  • simple("${type:package.Enum.CONSTANT}")
  • from("…​").split(bodyAs(TYPE.class))
  • simple("${body} 是 TYPE")

可能需要手动注册一些类以手动进行反对。

例如,以下简单表达式是在运行时动态解析类型 java.nio.ByteBuffer

---
simple("${body} is 'java.nio.ByteBuffer'")
---
Copy to Clipboard Toggle word wrap

因此,需要注册 java.nio.ByteBuffer以反映

如果您的路由应该从类路径加载 Simple 脚本,如下例所示

from("direct:start").transform().simple("resource:classpath:mysimple.txt");
Copy to Clipboard Toggle word wrap

然后,您需要使用 Quarkus quarkus.native.resources.includes 属性将资源包含在原生可执行文件中,如下所示:

quarkus.native.resources.includes = mysimple.txt
Copy to Clipboard Toggle word wrap

当在带有 #class:*#type:* 等配置的原生模式中指定自定义 bean 时,可能需要手动注册一些类进行反射。

例如,下面的自定义 bean 定义涉及使用反射进行 bean 实例化和 setter 调用:

---
camel.beans.customBeanWithSetterInjection = #class:org.example.PropertiesCustomBeanWithSetterInjection
camel.beans.customBeanWithSetterInjection.counter = 123
---
Copy to Clipboard Toggle word wrap

因此,为反映需要注册类 PropertiesCustomBeanWithSetterInjection ,请注意,在这种情况下可以省略字段访问权限。

Expand
配置属性类型默认

lock quarkus.camel.bootstrap.enabled

当设置为 true 时,CamelRuntime 将自动启动。

布尔值

true

lock quarkus.camel.service.discovery.exclude-patterns

以逗号分隔的 Ant-path 风格模式列表,以匹配类路径中的 Camel 服务定义文件。匹配文件中定义的服务无法通过 org.apache.camel.spi.FactoryFinder 机制发现。排除的优先级高于 includes。此处定义的排除也可用于实现 Camel Quarkus 扩展中包含的服务的可发现性。示例值: META-INF/services/org/apache/camel/foo/*,META-INF/services/org/apache/camel/foo/**/bar

字符串

 

lock quarkus.camel.service.discovery.include-patterns

以逗号分隔的 Ant-path 风格模式列表,以匹配类路径中的 Camel 服务定义文件。匹配文件中定义的服务将通过 org.apache.camel.spi.FactoryFinder 机制发现,除非通过 exclude-patterns 中排除。请注意,Camel Quarkus 扩展可能会默认包括一些服务。此处选择的服务添加到这些服务,且 exclude-patterns 中定义的排除项应用到相应的集合。示例值: META-INF/services/org/apache/camel/foo/*,META-INF/services/org/apache/camel/foo/**/bar

字符串

 

lock quarkus.camel.service.registry.exclude-patterns

以逗号分隔的 Ant-path 风格模式列表,以匹配类路径中的 Camel 服务定义文件。匹配文件中定义的服务不会在应用程序静态初始化过程中添加到 Camel 注册表中。排除的优先级高于 includes。此处定义的排除也可用于注册 Camel Quarkus 扩展中包含的服务。示例值: META-INF/services/org/apache/camel/foo/*,META-INF/services/org/apache/camel/foo/**/bar

字符串

 

lock quarkus.camel.service.registry.include-patterns

以逗号分隔的 Ant-path 风格模式列表,以匹配类路径中的 Camel 服务定义文件。匹配文件中定义的服务将在应用程序的静态初始化过程中添加到 Camel registry 中,除非通过 exclude-patterns 排除给定的文件。请注意,Camel Quarkus 扩展可能会默认包括一些服务。此处选择的服务添加到这些服务,且 exclude-patterns 中定义的排除项应用到相应的集合。示例值: META-INF/services/org/apache/camel/foo/*,META-INF/services/org/apache/camel/foo/**/bar

字符串

 

lock quarkus.camel.runtime-catalog.components

如果为 true,嵌入在应用程序中的 Runtime Camel Catalog 将包含在应用程序中可用的 Camel 组件的 JSON 模式 ; 否则,组件 JSON 模式将不会包括在 Runtime Camel Catalog 中,并试图访问它们将导致 RuntimeException。将其设置为 false 有助于减少原生镜像的大小。在 JVM 模式中,除了使与原生模式一致的行为外,将这个标志设置为 false 时没有真正的优势。

布尔值

true

lock quarkus.camel.runtime-catalog.languages

如果为 true,嵌入在应用程序中的 Runtime Camel Catalog 将包含应用程序中可用的 Camel 语言的 JSON 模式;否则语言 JSON 模式将不会包括在 Runtime Camel Catalog 中,并试图访问它们将导致 RuntimeException。将其设置为 false 有助于减少原生镜像的大小。在 JVM 模式中,除了使与原生模式一致的行为外,将这个标志设置为 false 时没有真正的优势。

布尔值

true

lock quarkus.camel.runtime-catalog.dataformats

如果为应用程序嵌入了 Runtime Camel Catalog,则会包含应用程序中提供的 Camel 数据格式的 JSON 模式;否则,在 Runtime Camel Catalog 中将无法使用数据格式 JSON 模式,并试图访问它们将导致 RuntimeException。将其设置为 false 有助于减少原生镜像的大小。在 JVM 模式中,除了使与原生模式一致的行为外,将这个标志设置为 false 时没有真正的优势。

布尔值

true

lock quarkus.camel.runtime-catalog-models

如果为 true,嵌入在应用程序中的 Runtime Camel Catalog 将包含应用程序中可用的 Camel EIP 模型的 JSON 模式,否则 EIP 模型 JSON 模式将不会包括在 Runtime Camel Catalog 中,并试图访问它们将导致 RuntimeException。将其设置为 false 有助于减少原生镜像的大小。在 JVM 模式中,除了使与原生模式一致的行为外,将这个标志设置为 false 时没有真正的优势。

布尔值

true

lock quarkus.camel.routes-discovery.enabled

在静态初始化过程中启用路由自动发现。

布尔值

true

lock quarkus.camel.routes-discovery.exclude-patterns

用于对 RouteBuilder 类进行独占过滤扫描。独占过滤的优先级高于包过滤。模式使用 Ant-path 风格模式。可以使用逗号分隔多个模式。例如,要排除从 Bar use 开始的所有类,**/Bar* 要排除特定软件包的所有路由,请使用 com/mycompany/bar/* 排除所有路由表单,并将其子软件包使用双通配符:com/mycompany/bar/**,并排除来自两个特定软件包的所有路由:com/mycompany/bar/*、com/mycompany/bar/*

字符串

 

lock quarkus.camel.routes-discovery.include-patterns

用于对 RouteBuilder 类进行包过滤扫描。独占过滤的优先级高于包过滤。模式使用 Ant-path 风格模式。可以使用逗号分隔多个模式。例如,要包含以 Foo 使用开始的所有类:**/Foo*,用于包含特定软件包的所有路由,请使用 com/mycompany/foo/* 来包括所有路由,包括来自两个具体软件包的所有路由:com/mycompany/foo/*,并包括来自两个特定软件包的所有路由:com/mycompany/foo/*、com/mycompany/foo/*

字符串

 

lock quarkus.camel.native.resources.exclude-patterns

在 Camel Quarkus 2.0.0 中,使用 quarkus.native.resources.excludes 替代。使用此属性在构建时抛出异常。

字符串

 

lock quarkus.camel.native.resources.include-patterns

由 Camel Quarkus 2.0.0 中的 quarkus.native.resources.includes 替代。使用此属性在构建时抛出异常。

字符串

 

lock quarkus.camel.native.reflection.exclude-patterns

以逗号分隔的 Ant-path 风格模式列表,以匹配应在注册中排除的类名称以便反映。使用 java.lang.Class.getName() 方法返回的类名称格式:以句点 . 分隔的软件包片段 . 和 inner 类以美元符号 $。这个选项缩小通过 include-patterns 选择的设置范围。默认情况下,不包含任何类。这个选项不能用于取消注册通过 Quarkus 扩展在内部注册的类。

字符串

 

lock quarkus.camel.native.reflection.include-patterns

以逗号分隔的 Ant-path 风格模式列表,以匹配应注册以反映的类名称。使用 java.lang.Class.getName() 方法返回的类名称格式:以句点 . 分隔的软件包片段 . 和 inner 类以美元符号 $。默认情况下,不包含任何类。这个选项选择的设置可以通过 exclude-patterns 来缩小。请注意,Quarkus 扩展通常会自行注册所需的类进行反映。当内置功能不足时,这个选项非常有用。请注意,这个选项提供了对构造器、字段和方法的完整反映访问。如果您需要更精细的控制,请考虑在 Java 代码中使用 io.quarkus.runtime.annotations.RegisterForReflection 注解。要使这个选项正常工作,必须满足以下条件之一: - 在模式中没有通配符(*/)- 包含所选类的工件包含 Jandex index(META-INF/jandex.idx)- 包含所选类的工件将被注册以进行索引 在 application.properties 中使用 quarkus.index-dependency.* 选项系列选项,例如: quarkus.index-dependency.my-dependency.my-dep.group-id = org.my-group quark.index-dependency.my-dep.artifact-id = my-artifact,其中 my-dep 是您选择的标签,告知 Quarkus 将 org.my-groupmy-artifact 属于一起。

字符串

 

lock quarkus.camel.native.reflection.serialization-enabled

如果为 true,则为序列化注册基本类;否则,在原生模式下,不会自动注册基本类进行序列化。自动注册序列化的类列表可在 CamelSerializationProcessor.BASE_SERIZATION_CLASSES 中找到。将其设置为 false 有助于减少原生镜像的大小。在 JVM 模式中,除了使与原生模式一致的行为外,将这个标志设置为 true 却没有真正的好处。

布尔值

false

lock quarkus.camel.csimple.on-build-time-analysis-failure

如果无法在构建期间从路由定义中提取 CSimple 表达式,该怎么办。

org.apache.camel.quarkus.core.CamelConfig.FailureRemedy

warn

lock quarkus.camel.event-bridge.enabled

是否启用 Camel 事件到 CDI 事件的桥接。这允许为 Camel 事件配置 CDI 观察程序。e.g.属于 org.apache.camel.quarkus.core.events,org.apache.camel.quarkus.main.events & org.apache.camel.impl.event 软件包。请注意,只有在应用程序中配置的 observers 中存在为 Camel 事件时,这个配置项才会生效。

布尔值

true

lock quarkus.camel.main.shutdown.timeout

等待 CamelMain#stop() 完成的超时(具有 millisecond 精度)

java.time.Duration

PT3S

lock quarkus.camel.main.arguments.on-unknown

CamelMain 遇到未知参数时要执行的操作。失败 - 打印 CamelMain usage 语句并抛出 RuntimeException 忽略 - Suppresses any 警告,应用程序启动会正常处理 - 打印 CamelMain 使用声明,但允许应用程序启动正常进行

org.apache.camel.quarkus.core.CamelConfig.FailureRemedy

warn

lock 构建时会修复的配置属性。所有其他配置属性可在运行时使用。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat