2.24. Core


Camel 核心功能和基本 Camel 语言:Constant、ExchangeProperty、Header、Ref、Simple 和 Tokenize

2.24.1. 什么是内部

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

2.24.2. Maven 协调

在 code.quarkus.redhat.com 上使用此扩展创建新项目

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

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-core</artifactId>
</dependency>

2.24.3. 其他 Camel Quarkus 配置

2.24.3.1. 简单语言

2.24.3.1.1. 使用 OGNL 表示法

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

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

---
simple("${body.address}")
---

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

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

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

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

可能需要注册一些类来手动反映。

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

---
simple("${body} is 'java.nio.ByteBuffer'")
---

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

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

from("direct:start").transform().simple("resource:classpath:mysimple.txt");

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

quarkus.native.resources.includes = mysimple.txt

有关选择包含在原生可执行文件中的资源的更多信息,请参阅 原生可执行文件 中的 组合资源

当通过原生模式中的属性指定自定义 bean 时,如 #class:* or #type:*,可能需要注册一些类来手动反映。

例如,以下自定义 bean 定义涉及对 bean 实例化和 setter 调用使用 reflection:

---
camel.beans.customBeanWithSetterInjection = #class:org.example.PropertiesCustomBeanWithSetterInjection
camel.beans.customBeanWithSetterInjection.counter = 123
---

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

Expand
配置属性类型default

quarkus.camel.bootstrap.enabled

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

布尔值

true

quarkus.camel.service.discovery.exclude-patterns

以逗号分隔的 Ant 路径风格模式列表,以匹配 classpath 中的 Camel 服务定义文件。匹配文件中定义的服务 无法通过 **org.apache.camel.spi.FactoryFinder 机制发现。

excludes 的优先级高于 includes。此处定义的 excludes 也可以用来发现由 Camel Quarkus 扩展包括的服务。

示例值:META-INF/services/org/apache/camel/foo/*,META-INF/services/org/apache/camel/foo/**/bar

字符串列表

 

quarkus.camel.service.discovery.include-patterns

以逗号分隔的 Ant 路径风格模式列表,以匹配 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

字符串列表

 

quarkus.camel.service.registry.exclude-patterns

以逗号分隔的 Ant 路径风格模式列表,以匹配 classpath 中的 Camel 服务定义文件。在应用程序的静态初始化过程中,匹配文件中定义的服务不会添加到 Camel registry 中。

excludes 的优先级高于 includes。此处定义的 excludes 也可以用来注册 Camel Quarkus 扩展中包含的服务。

示例值: META-INF/services/org/apache/camel/fooctrl,META-INF/services/org/apache/camel/foo/**/bar**

字符串列表

 

quarkus.camel.service.registry.include-patterns

以逗号分隔的 Ant 路径风格模式列表,以匹配 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

字符串列表

 

quarkus.camel.runtime-catalog.components

如果为 true,嵌入在应用程序中的 Runtime Camel Catalog 将包含应用程序中提供的 Camel 组件的 JSON 模式;否则,Runtime Camel Catalog 中不提供组件 JSON 模式,并且任何试图访问那些将导致 RuntimeException。

把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,没有将此标志设置为 false 的实际好处,除了使行为与原生模式一致。

布尔值

true

quarkus.camel.runtime-catalog.languages

如果为 true,嵌入于应用程序的 Runtime Camel Catalog 将包含应用程序中提供的 Camel 语言的 JSON 模式;否则,Runtime Camel Catalog 中不提供语言 JSON 模式,并且任何试图访问那些将导致 RuntimeException。

把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,没有将此标志设置为 false 的实际好处,除了使行为与原生模式一致。

布尔值

true

quarkus.camel.runtime-catalog.dataformats

如果为 true,为应用程序嵌入的 Runtime Camel Catalog 会包含应用程序中提供的 Camel 数据格式的 JSON 模式;否则,在 Runtime Camel Catalog 中将无法使用数据格式 JSON 模式,并试图访问它们将导致 RuntimeException。

把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,没有将此标志设置为 false 的实际好处,除了使行为与原生模式一致。

布尔值

true

quarkus.camel.runtime-catalog.devconsoles

如果为 true,嵌入在应用程序中的 Runtime Camel Catalog 将包含应用程序中提供的 Camel dev 控制台的 JSON 模式;否则,在 Runtime Camel Catalog 中无法使用 dev 控制台 JSON 模式,并试图访问它们将导致 RuntimeException。

把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,没有将此标志设置为 false 的实际好处,除了使行为与原生模式一致。

布尔值

true

quarkus.camel.runtime-catalog.models

如果为 true,嵌入于应用程序的 Runtime Camel Catalog 将包含应用程序中提供的 Camel EIP 模型的 JSON 模式;否则,Runtime Camel Catalog 中不提供 EIP 模型 JSON 模式,并且任何尝试访问它们将导致 RuntimeException。

把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,没有将此标志设置为 false 的实际好处,除了使行为与原生模式一致。

布尔值

true

quarkus.camel.runtime-catalog.transformers

如果为 true,嵌入在应用程序中的 Runtime Camel Catalog 将包含应用程序中提供的 Camel 转换器的 JSON 模式;否则,当 Runtime Camel Catalog 中无法使用转换器 JSON 模式,且任何尝试访问它们时都将导致 RuntimeException。

把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,没有将此标志设置为 false 的实际好处,除了使行为与原生模式一致。

布尔值

true

quarkus.camel.routes-discovery.enabled

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

布尔值

true

quarkus.camel.routes-discovery.exclude-patterns

用于对 RouteBuilder 类进行独占过滤扫描。独占过滤优先于包含的过滤。模式使用 Ant-path 风格模式。可以使用逗号分隔多个模式。例如,要排除所有以 Bar 开始的类,使用:**/Bar*;要排除所有组成一个特定数据包的路由,使用:com/mycompany/bar/*;要排除所有组成一个特定数据包和它的子数据包的路由,使用双通配符:com/mycompany/bar/**;要排除所有来自两个特定数据包的路由,使用:com/mycompany/bar/*,com/mycompany/stuff/*

字符串列表

 

quarkus.camel.routes-discovery.include-patterns

用于对 RouteBuilder 类进行包含过滤扫描。独占过滤优先于包含的过滤。模式使用 Ant-path 风格模式。可以使用逗号分隔多个模式。例如,要包括所有以 Foo 开始的类,使用:**/Foo*;要包括所有组成一个特定数据包的路由,使用:com/mycompany/foo/*;要包括所有组成一个特定数据包和它的子数据包的路由,使用双通配符:com/mycompany/foo/**;要包括所有来自两个特定数据包的路由,使用:com/mycompany/foo/*,com/mycompany/stuff/*

字符串列表

 

quarkus.camel.native.reflection.exclude-patterns

以逗号分隔的 Ant-path 风格模式列表,以匹配应在注册进行反映 中排除的 类名称。使用 java.lang.Class.getName () 方法返回的类名称格式:用句点分隔的软件包段 . 和 inner 类 $

这个选项缩小由 include-patterns 选择的集合。默认情况下,不会排除任何类。

这个选项无法用于取消注册由 Quarkus 扩展内部注册的类。

字符串列表

 

quarkus.camel.native.reflection.include-patterns

以逗号分隔的 Ant 路径风格模式列表,以匹配应注册的类名称。使用 java.lang.Class.getName () 方法返回的类名称格式:用句点分隔的软件包段 . 和 inner 类 $

默认情况下,不包含任何类。此选项选择的集合可以通过 exclude-patterns 缩小。

请注意,Quarkus 扩展通常自行注册所需的类来反映。当内置功能不足时,此选项很有用。

请注意,这个选项启用对构造器、字段和方法的完整反映访问。如果您需要精细的控制,请考虑使用 Java 代码中的 io.quarkus.runtime.annotations.RegisterForReflection 注解。

要使这个选项正常工作,必须至少满足以下条件之一:

- 在模式中没有通配符(*/)- 包含所选类的工件(META-INF/jandex.idx)- 包含所选类的工件使用 quarkus.index-dependencyRules 系列在 application. properties - e.g 中注册了索引。

' quarkus.index-dependency.my-dep.group-id = org.my-group quarkus.index-dependency.my-dep.artifact-id = my-artifact '

其中 my-dep 是您选择的标签,用于告知 Quarkus org.my-groupmy-artifact 属于一起。

字符串列表

 

quarkus.camel.native.reflection.serialization-enabled

如果为 true,则会为序列化注册基本类;否则,在原生模式中不会自动注册基本类。CamelSerializationProcessor.BASE_SERIALIZATION_CLASSES 中自动注册的类列表可在 CamelSerializationProcessor 中找到。把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,没有将此标志设置为 true 的实际好处,除了使行为与原生模式一致。

布尔值

false

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

如果构建时无法从路由定义中提取 CSimple 表达式,则应该做什么。

失败警告忽略

warn

quarkus.camel.expression.on-build-time-analysis-failure

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

失败警告忽略

warn

quarkus.camel.expression.extraction-enabled

指明是否需要在构建时从路由定义中提取表达式。如果禁用,则在运行时编译表达式。

布尔值

true

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 事件配置的观察程序时,此配置项目才会生效。

布尔值

true

quarkus.camel.source-location-enabled

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

布尔值

false

quarkus.camel.trace.enabled

在 Camel 应用程序中启用 tracer。

布尔值

false

quarkus.camel.trace.standby

要将 tracer 设置为待机模式,将安装 tracer,但不会自动启用 tracer。然后,tracer 可以从 Java、JMX 或工具显式启用。

布尔值

false

quarkus.camel.trace.backlog-size

定义 tracer 中要保留的最后一个消息数量。

int

1000

quarkus.camel.trace.remove-on-dump

在 tracer 转储时,是否应该删除所有 traced 消息。默认情况下,消息会被删除,这意味着转储不包含之前转储的消息。

布尔值

true

quarkus.camel.trace.body-max-chars

将消息正文限制为 traced 消息中的最大大小。使用 0 或负值使用无限大小。

int

131072

quarkus.camel.trace.body-include-streams

是否包含基于流的消息的消息正文。如果启用然后是启用的,则流稍后可能无法被重新读取。请参阅有关流缓存的更多信息。

布尔值

false

quarkus.camel.trace.body-include-files

是否包含基于文件的消息的消息正文。开销是必须从文件中读取文件内容。

布尔值

true

quarkus.camel.trace.include-exchange-properties

是否在 traced 消息中包含交换属性。

布尔值

true

quarkus.camel.trace.include-exchange-variables

是否在 traced 消息中包含交换变量。

布尔值

true

quarkus.camel.trace.include-exception

在交换失败时,是否在 trace 的消息中包含异常。

布尔值

true

quarkus.camel.trace.trace-rests

是否追踪从 Rest DSL 创建的路由。

布尔值

false

quarkus.camel.trace.trace-templates

是否追踪从路由模板或 kamelets 创建的路由。

布尔值

false

quarkus.camel.trace.trace-pattern

根据路由或节点 id 过滤以进行追踪。

string

 

quarkus.camel.trace.trace-filter

过滤用于追踪消息。

string

 

quarkus.camel.type-converter.statistics-enabled

是否启用类型转换器统计信息。默认情况下,类型转换器使用率统计被禁用。请注意,启用统计会对非常重度负载造成较小的性能影响。

布尔值

false

quarkus.camel.main.shutdown.timeout

一个超时(具有 millisecond 精度)等待 CamelMain"stop () 完成

duration image::icons/circle-question.svg[title=Moree information about the Duration format]

PT3S

quarkus.camel.main.arguments.on-unknown

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

失败警告忽略

warn

在构建时修复的配置属性。所有其他配置属性可在运行时覆盖。

关于 Duration 格式

要写入持续时间值,请使用标准 java.time.Duration 格式。如需更多信息,请参阅 Duration#parse ()Java API 文档

您还可以使用简化的格式,从数字开始:

  • 如果值只是一个数字,它代表时间(以秒为单位)。
  • 如果值为数字,后跟 ms,代表时间(毫秒)。

在其他情况下,简化的格式被转换为 java.time.Duration 格式以进行解析:

  • 如果该值是一个数字,后跟 hms,则前缀为 PT
  • 如果值为数字,后跟 d,则会以 P 为前缀。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部