2.18. Core


Camel 核心功能和基本的 Camel 语言/等级、交换属性、Header、Ref、简单和令牌化

2.18.1. 内部内容

有关使用和配置详情,请参阅上述链接。

2.18.2. Maven 协调

在 code.quarkus.redhat.com 上创建一个具有此扩展名的新项目

或者在现有项目中添加协调:

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

2.18.3. 其他 Camel Quarkus 配置

2.18.3.1. 简单语言

2.18.3.1.1. 使用 OGNL 表示法

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

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

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

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

2.18.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 来反映。

如果您的路由应该从 classpath 加载一个简单脚本,如下例所示

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 风格模式列表,以匹配 classpath 中的 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 风格模式列表,以匹配 classpath 中的 Camel 服务定义文件。匹配文件中定义的服务将通过 org.apache.camel.spi.FactoryFinder 机制发现,除非通过 exclude-patterns 排除给定文件。请注意,Camel Quarkus 扩展可能会默认包括一些服务。这里选择的服务添加到这些服务中,在 exclude-patterns 中定义的排除项应用到 union 集。示例值: META-INF/services/org/apache/camel/foo/*,META-INF/services/org/apache/camel/foo/**/bar

字符串

 

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

以逗号分隔的 Ant-path 风格模式列表,以匹配 classpath 中的 Camel 服务定义文件。在应用程序的静态初始化过程中,匹配文件中定义的服务不会添加到 Camel registry 中。排除的优先级高于 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 风格模式列表,以匹配 classpath 中的 Camel 服务定义文件。在应用静态初始化期间,匹配文件中定义的服务将添加到 Camel registry 中,除非通过 exclude-patterns 排除该文件。请注意,Camel Quarkus 扩展可能会默认包括一些服务。这里选择的服务添加到这些服务中,在 exclude-patterns 中定义的排除项应用到 union 集。示例值: 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 模式;否则,在 Runtime Camel Catalog 中不提供组件 JSON 模式,并且任何尝试访问它们将导致 RuntimeException。把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,除了使行为与原生模式一致外,将此标志设置为 false 没有实际的好处。

布尔值

true

lock quarkus.camel.runtime-catalog.languages

如果为 true,则应用程序中嵌入的 Runtime Camel Catalog 将包含应用程序中可用的 Camel 语言的 JSON 模式;否则,在 Runtime Camel Catalog 中不提供语言 JSON 模式,并且任何尝试访问它们将导致 RuntimeException。把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,除了使行为与原生模式一致外,将此标志设置为 false 没有实际的好处。

布尔值

true

lock quarkus.camel.runtime-catalog.dataformats

如果为 true,则应用程序中嵌入的 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/stufftle all routes form a specific package, its sub-packages using double wildcard: com/mycompany/bar/** And 来排除来自两个特定软件包的所有路由,使用 com/mycompany/barial,com/mycompany/stuffTimestamp.

字符串

 

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

用于包含过滤 RouteBuilder 类扫描。独占过滤优先于包含的过滤。模式使用 Ant-path 风格模式。可以使用逗号分开指定多个模式。例如,要包括以 Foo use 开始的所有类:**/Foo*,使其包含特定软件包使用的所有路由表单:com/mycompany/foo locate, include all routes form a specific package, its sub-packages using double wildcard: com/mycompany/foo/** And 来包括两个特定软件包的所有路由使用: com/mycompany/fooautomatic,com/mycompany/stuffTimestamp.

字符串

 

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.include 替代。使用此属性在构建时抛出异常。

字符串

 

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

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

字符串

 

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

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

字符串

 

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

如果为 true,为序列化注册基本类;否则,基本类不会自动注册,以原生模式进行序列化。可在 CamelSerializationProcessor.BASE_SERIALIZATION_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 观察器。例如,属于 org.apache.camel.quarkus.core.events,org.apache.camel.quarkus.main.events & org.apache.camel.impl.event 软件包的用户。请注意,此配置项目仅在为 Camel 事件配置的 observers 配置时才会产生任何影响。

布尔值

true

lock quarkus.camel.source-location-enabled

启用/禁用 camel 源位置的构建时间配置选项

布尔值

false

lock quarkus.camel.main.shutdown.timeout

一个超时时间(带有 millisecond precision)等待 CamelMain#stop () 完成

java.time.Duration

PT3S

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

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

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

warn

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat