Camel Extensions for Quarkus 参考


Red Hat Integration 2023.q2

红帽提供的 Camel Extensions for Quarkus

Integration Documentation Team Integration Support Team http://access.redhat.com/support

摘要

Camel Extensions for Quarkus 为许多 Camel 组件提供了 Quarkus 扩展。本参考描述了红帽支持的每个扩展的设置。

前言

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息

第 1 章 扩展概述

1.1. 支持级别定义

在 Camel Extensions for Quarkus 中作为生产环境完全支持的 Camel Extensions 之前,新功能、服务和组件会经历一些支持级别。这是为了确保向我们的产品提供企业稳定性的正确平衡,同时允许我们的客户和合作伙伴试验新的 Camel Extensions for Quarkus 技术,同时提供反馈,以帮助指导未来开发活动。

Expand
表 1.1. Camel Extensions for Quarkus 支持级别
类型描述

社区支持

作为红帽对上游的承诺的一部分,新扩展集成到我们的 Camel Extensions for Quarkus 发行版本中从上游社区开始。虽然这些扩展经过测试并记录上游记录,但我们并没有检查这些扩展的成熟度,且可能在以后的产品版本中不被红帽正式支持。

注意

社区扩展在 Camel Quarkus 社区项目的 extensions 引用页面中列出。

技术预览

技术预览功能为用户提供了一个对最新的产品创新的试用机会,以便用户可以对其进行测试并提供反馈。但是,Red Hat 订阅级别协议并不包括对这些技术预览功能的完全支持。这些功能可能并不完善,且不适用于生产环境。由于红帽会考虑在将来的产品中使用这些技术预览功能,我们将尝试解决客户在使用这些功能时遇到的问题。

产品支持

产品支持扩展在正式的红帽发行版本中提供,并被完全支持。所有受支持的配置都还没有测试文档差距和扩展。

1.2. 支持的扩展

有 60 个扩展。

Expand
表 1.2. Camel Extensions for Quarkus 支持列表
扩展工件JVM 支持级别原生支持级别描述

AMQP

camel-quarkus-amqp

产品支持

产品支持

使用 Apache QPid 客户端与 AMQP 协议进行消息传递.

attachments

camel-quarkus-attachments

产品支持

产品支持

支持在 Camel 消息上附加。

AWS 2 DynamoDB

camel-quarkus-aws2-ddb

产品支持

产品支持

存储和检索 AWS DynamoDB 服务的数据,或使用 AWS SDK 版本 2.x 从 AWS DynamoDB 流接收信息。

AWS 2 Kinesis

camel-quarkus-aws2-kinesis

产品支持

产品支持

使用 AWS SDK 版本 2.x 从 AWS Kinesis Streams 使用和生成记录。

AWS 2 Lambda

camel-quarkus-aws2-lambda

产品支持

产品支持

使用 AWS SDK 版本 2.x 管理并调用 AWS Lambda 功能。

AWS 2 S3 Storage Service

camel-quarkus-aws2-s3

产品支持

产品支持

使用 AWS SDK 版本 2.x 从 AWS S3 Storage Service 存储和检索对象。

AWS 2 Simple Notification System (SNS)

camel-quarkus-aws2-sns

产品支持

产品支持

使用 AWS SDK 版本 2.x 将信息发送到 AWS Simple Notification 主题。

AWS 2 Simple Queue Service (SQS)

camel-quarkus-aws2-sqs

产品支持

产品支持

使用 AWS SDK 版本 2.x 向 AWS SQS 服务发送和接收信息。

Azure Storage Blob

camel-quarkus-azure-storage-blob

技术预览

技术预览

使用 SDK v12 从 Azure Storage Blob Service 存储和检索 Blob。

Azure Storage Queue

camel-quarkus-azure-storage-queue

技术预览

技术预览

azure-storage-queue 组件用于使用 Azure SDK v12 存储和检索信息到 Azure Storage Queue。

bean

camel-quarkus-bean

产品支持

产品支持

调用 Java Bean 的方法

Bean Validator

camel-quarkus-bean-validator

产品支持

产品支持

使用 Java Bean Validation API 验证消息正文。

浏览

camel-quarkus-browse

产品支持

产品支持

检查在支持 BrowsableEndpoint 的端点上收到的消息。

Cassandra CQL

camel-quarkus-cassandraql

产品支持

产品支持

使用 CQL3 API (而不是 Thrift API)与 Cassandra 2.0 集成。基于 DataStax 提供的 Cassandra Java 驱动程序。

Core

camel-quarkus-core

产品支持

产品支持

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

Cron

camel-quarkus-cron

产品支持

产品支持

通过 Unix cron 语法指定的时间触发事件的通用接口。

CXF

camel-quarkus-cxf-soap

产品支持

产品支持

使用 Apache CXF 公开 SOAP WebServices,或使用 CXF WS 客户端连接到外部 WebServices。

dataformat

camel-quarkus-dataformat

产品支持

产品支持

使用 Camel 数据格式作为常规 Camel 组件。

direct

camel-quarkus-direct

产品支持

产品支持

同步调用来自同一 Camel 上下文的另一个端点。

FHIR

camel-quarkus-fhir

产品支持

产品支持

使用 FHIR (Fast Healthcare Interoperability Resources)标准在电信域中交换信息。

File

camel-quarkus-file

产品支持

产品支持

读取和写入文件。

FTP

camel-quarkus-ftp

产品支持

产品支持

将文件上传到 FTP 或 SFTP 服务器。

Google BigQuery

camel-quarkus-google-bigquery

产品支持

产品支持

Google BigQuery 数据存储用于分析。

Google Pubsub

camel-quarkus-google-pubsub

产品支持

产品支持

向 Google Cloud Platform PubSub Service 发送和接收消息。

HTTP

camel-quarkus-http

产品支持

产品支持

使用 Apache HTTP 客户端 4.x 向外部 HTTP 服务器发送请求。

Infinispan

camel-quarkus-infinispan

产品支持

产品支持

从/写入 Infinispan 分布式键/值存储和数据网格。

JDBC

camel-quarkus-jdbc

产品支持

产品支持

通过 SQL 和 JDBC 访问数据库。

Jira

camel-quarkus-jira

产品支持

产品支持

与 JIRA 问题跟踪器交互。

JMS

camel-quarkus-jms

产品支持

产品支持

发送和接收来自 JMS Queue 或 Topic 的信息。

JPA

camel-quarkus-jpa

产品支持

产品支持

使用 Java Persistence API (DSL)从数据库存储和检索 Java 对象。

JTA

camel-quarkus-jta

产品支持

产品支持

使用 Java Transaction API (JTA)和 Narayana 事务管理器将 Camel 路由包含在事务中

Kafka

camel-quarkus-kafka

产品支持

产品支持

发送和接收来自 Apache Kafka 代理的信息。

kamelet

camel-quarkus-kamelet

产品支持

产品支持

Kamelet 组件支持与 Camel Route 模板引擎交互。

Kubernetes

camel-quarkus-kubernetes

技术预览

技术预览

对 Kubernetes API 执行操作

Log

camel-quarkus-log

产品支持

产品支持

将消息记录到底层日志记录机制。

Mail

camel-quarkus-mail

产品支持

产品支持

使用 imap、pop3 和 smtp 协议发送和接收电子邮件。

MicroProfile Fault Tolerance

camel-quarkus-microprofile-fault-tolerance

产品支持

产品支持

使用 MicroProfile Fault Tolerance 的 Circuit Breaker EIP。

MicroProfile Health

camel-quarkus-microprofile-health

产品支持

产品支持

使用 Camel 健康检查桥接 Eclipse MicroProfile 健康。

MicroProfile Metrics

camel-quarkus-microprofile-metrics

产品支持

产品支持

从 Camel 路由公开指标。

MLLP

camel-quarkus-mllp

产品支持

产品支持

使用 MLLP 协议与外部系统通信。

Mock

camel-quarkus-mock

产品支持

产品支持

使用模拟测试路由和介质规则。

MongoDB

camel-quarkus-mongodb

技术预览

技术预览

对 MongoDB 文档和集合执行操作。

Netty

camel-quarkus-netty

产品支持

产品支持

使用带有 Netty 4.x 的 TCP 或 UDP 的套接字级别网络。

OpenAPI Java

camel-quarkus-openapi-java

产品支持

产品支持

rest-dsl 支持使用 OpenAPI doc

paho

camel-quarkus-paho

产品支持

产品支持

使用 Eclipse Paho MQTT 客户端与 mq 消息代理通信。

Paho MQTT 5

camel-quarkus-paho-mqtt5

产品支持

产品支持

使用 Eclipse Paho MQTT v5 客户端与 MQTT 消息代理进行通信。

平台 HTTP

camel-quarkus-platform-http

产品支持

产品支持

使用当前平台中的 HTTP 服务器公开 HTTP 端点。

quartz

camel-quarkus-quartz

产品支持

产品支持

使用 Quartz 2.x 调度程序调度消息发送。

rest

camel-quarkus-rest

产品支持

产品支持

公开 REST 服务及其 OpenAPI 规格或调用外部 REST 服务。

REST OpenApi

camel-quarkus-rest-openapi

产品支持

产品支持

根据 OpenAPI 规格文档配置 REST producer,委派到实施 RestProducerFactory 接口的组件。

Salesforce

camel-quarkus-salesforce

产品支持

产品支持

使用 Java DTO 与 Salesforce 通讯。

SEDA

camel-quarkus-seda

产品支持

产品支持

在同一 JVM 中异步调用任何 Camel 上下文的另一个端点。

Slack

camel-quarkus-slack

技术预览

技术预览

向/从 Slack 发送和接收消息。

SNMP

camel-quarkus-snmp

产品支持( 请参阅发行注记 以了解限制信息。)

技术预览

接收陷阱和轮询 SNMP (简单网络管理协议)功能的设备。

SQL

camel-quarkus-sql

产品支持

产品支持

使用 Spring JDBC 执行 SQL 查询。

电话报

camel-quarkus-telegram

技术预览

技术预览

发送和接收作为站报 Bot API 的消息。

timer

camel-quarkus-timer

产品支持

产品支持

使用 java.util.Timer 以指定间隔生成消息。

验证器

camel-quarkus-validator

产品支持

产品支持

使用 XML 架构和 JAXP 验证来验证有效负载。

Vert.x HTTP 客户端

camel-quarkus-vertx-http

产品支持

产品支持

使用 Vert.x 发送请求到外部 HTTP 服务器

XQuery

camel-quarkus-saxon

产品支持

产品支持

使用 XQuery 和 Saxon 查询和/或转换 XML 有效负载。

zip 文件

camel-quarkus-zipfile

产品支持

产品支持

使用 java.util.Timer 以指定间隔生成消息。

1.3. 支持的数据格式

有 10 个数据格式。

Expand
表 1.3. Camel Extensions for Quarkus 支持列表
扩展工件JVM 支持级别原生支持级别描述

avro

camel-quarkus-avro

产品支持

产品支持

使用 Apache Avro 二进制数据格式序列化和反序列化消息。

Avro Jackson

camel-quarkus-jackson-avro

产品支持

产品支持

marshal POJOs 到 Avro,并使用 Jackson 回来。

bindy

camel-quarkus-bindy

产品支持

产品支持

使用 Camel Bindy Marshal 和 使用 Camel Bindy Marshal 的 POJOs 和固定字段长度格式之间的 POJO 和固定字段长度格式,使用 Camel Bindy Marshal 和使用 Camel Bindy Marshal 的 POJOs 和键-值对(KVP)格式之间的 POJO 和固定字段长度格式之间的 marshal 和 unmarshal。

HL7

camel-quarkus-hl7

产品支持

产品支持

使用 HL7 MLLP codec marshal 和 unmarshal HL7 (Health Liberty)模型对象。

Jacks

camel-quarkus-jackson

产品支持

产品支持

marshal POJOs 到 JSON,并使用 Jackson 回来

JacksonXML

camel-quarkus-jacksonxml

产品支持

产品支持

将 XML 有效负载解压缩为 POJO,并使用 Jackson 的 XMLMapper 扩展返回。

JAXB

camel-quarkus-jaxb

产品支持

产品支持

将 XML 有效负载解压缩为 POJO,并使用 JAXB2 XML marshalling 标准。

JSON Gson

camel-quarkus-gson

产品支持

产品支持

marshal POJOs 到 JSON,并使用 Gson 回来。

protobuf Jackson

camel-quarkus-jackson-protobuf

产品支持

产品支持

marshal POJOs 到 Protobuf,并使用 Jackson 回来。

SOAP 数据格式

camel-quarkus-soap

产品支持

产品支持

marshal Java 对象到 SOAP 消息,并返回。

1.4. 支持的语言

有 12 个语言。

Expand
表 1.4. Camel Extensions for Quarkus 支持列表
扩展工件JVM 支持级别原生支持级别描述

Bean 方法

camel-quarkus-bean

产品支持

产品支持

调用 Java Bean 的方法

常数

camel-quarkus-core

产品支持

产品支持

固定值只在路由启动过程中设置一次。

ExchangeProperty

camel-quarkus-core

产品支持

产品支持

获取名为 Camel Exchange 属性的值。

File

camel-quarkus-core

产品支持

产品支持

对于使用 file/simple 语言的表达式和 predicates。

标头

camel-quarkus-core

产品支持

产品支持

获取 named Camel Message 标头的值。

HL7 Terser

camel-quarkus-hl7

产品支持

产品支持

使用 HL7 MLLP codec marshal 和 unmarshal HL7 (Health Liberty)模型对象。

JSON 路径

camel-quarkus-jsonpath

产品支持

产品支持

根据 JSON 消息正文评估 JsonPath 表达式。

Ref

camel-quarkus-core

产品支持

产品支持

在 Camel Registry 中查找表达式并进行评估。

Simple(简单)

camel-quarkus-core

产品支持

产品支持

针对 Camel Exchange 评估 Camel 的内置简单语言表达式。

令牌化

camel-quarkus-core

产品支持

产品支持

使用指定的分隔符模式验证文本有效负载。

XPath

camel-quarkus-xpath

产品支持

产品支持

根据 XML 有效负载评估 XPath 表达式。

XQuery

camel-quarkus-saxon

产品支持

产品支持

使用 XQuery 和 Saxon 查询和/或转换 XML 有效负载。

1.5. 其它扩展

有 3 个其它扩展。

Expand
表 1.5. Camel Extensions for Quarkus 支持列表
扩展工件JVM 支持级别原生支持级别描述

OpenTelemetry

camel-quarkus-opentelemetry

技术预览

技术预览

使用 OpenTelemetry 的分布式追踪

YAML DSL

camel-quarkus-yaml-dsl

产品支持

产品支持

用于解析 YAML 路由定义的 YAML 堆栈

XML DSL

camel-quarkus-xml-io-dsl

产品支持

产品支持

使用 camel-xml-io 的 Camel XML DSL。

第 2 章 扩展参考

本章提供有关 Quarkus 的 Camel Extensions 的参考信息。

2.1. AMQP

使用 Apache QPid 客户端与 AMQP 协议进行消息传递.

2.1.1. 内部是什么

  • AMQP 组件, URI 语法: amqp:destinationType:destinationName

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

2.1.2. Maven 协调

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

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

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

2.1.3. 使用方法

2.1.3.1. 带有 org.w3c.dom.Node的消息映射

Camel AMQP 组件支持 javax.jms.Messageorg.apache.camel.Message 之间的消息映射。当希望转换 org.w3c.dom.Node 的 Camel 消息正文类型时,您必须确保 classpath 上存在 camel-quarkus-jaxp 扩展。

2.1.3.2. 对 javax.jms.ObjectMessage 的原生模式支持

将 JMS 消息有效负载作为 javax.jms.ObjectMessage 发送时,您必须注解相关类以使用 @RegisterForReflection (serialization = true) 进行序列化。请注意,这个扩展会自动为您设置 quarkus.camel.native.reflection.serialization-enabled = true。如需更多信息,请参阅 原生模式用户指南

2.1.4. Camel Quarkus 限制

2.1.4.1. 连接池

JMS 连接池尚不受支持,因为 quarkus-qpid-jms 仍存在打开 的问题

2.1.5. 原生模式中的 transferException 选项

要在原生模式中使用 transferException 选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南

您还需要为您要序列化的异常类启用序列化。例如:

@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
Copy to Clipboard Toggle word wrap

2.1.6. 其他 Camel Quarkus 配置

扩展利用 Quarkus Qpid JMS 扩展。ConnectionFactory bean 会被自动创建,并连接到 AMQP 组件中。连接工厂可以通过 Quarkus Qpid JMS 配置选项 进行配置。

2.2. attachments

支持 Camel 消息中的附加

2.2.1. 内部是什么

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

2.2.2. Maven 协调

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

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

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

2.3. avro

使用 Apache Avro 二进制数据格式序列化和反序列化消息。

2.3.1. 内部是什么

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

2.3.2. Maven 协调

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

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

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

2.3.3. 其他 Camel Quarkus 配置

除了 vanilla Camel 已知的标准用法外,Camel Quarkus 还添加了在 JVM 和原生模式下构建时解析 Avro 模式的方法。

从 Avro 模式文件生成 Avro 类的方法是由 quarkus-avro 扩展共存的方法。它需要以下内容:

  1. lsblkavsc 文件存储在名为 src/main/avrosrc/test/avro的文件夹中
  2. 除了 quarkus-maven-plugin 的常见 构建 目标外,添加 generate-code 目标:

    <plugin>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>generate-code-and-build</id>
                <goals>
                    <goal>generate-code</goal>
                    <goal>build</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    Copy to Clipboard Toggle word wrap

请参阅 Camel Quarkus Avro integration testQuarkus Avro integration test 中的一个可以正常工作的配置。

2.4. AWS 2 DynamoDB

存储和检索 AWS DynamoDB 服务的数据,或使用 AWS SDK 版本 2.x 从 AWS DynamoDB 流接收信息。

2.4.1. 内部是什么

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

2.4.2. Maven 协调

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

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

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

2.4.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.4.4. 其他 Camel Quarkus 配置

2.4.4.1. 与 Quarkus Amazon DynamoDB 的可选集成

如果需要,可以将 Quarkus Amazon DynamoDB 扩展与 Camel Quarkus AWS 2 DynamoDB 结合使用。请注意,这完全是可选的,根本不强制使用。请按照 Quarkus 文档,但请注意以下注意事项:

  1. 必须通过配置以下属性来选择客户端类型 apache

    quarkus.dynamodb.sync-client.type=apache
    Copy to Clipboard Toggle word wrap
  2. DynamoDbClient 必须在 Quarkus CDI 参考 的意义中进行"不可删除",以便 Camel Quarkus 能够在运行时查看它。您可以通过添加 dummy bean 注入 DynamoDbClient 来访问该,例如:

    import javax.enterprise.context.ApplicationScoped;
    import io.quarkus.arc.Unremovable;
    import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
    
    @ApplicationScoped
    @Unremovable
    class UnremovableDynamoDbClient {
        @Inject
        DynamoDbClient dynamoDbClient;
    }
    Copy to Clipboard Toggle word wrap

2.5. AWS 2 Kinesis

使用 AWS SDK 版本 2.x 从 AWS Kinesis Streams 使用和生成记录。

2.5.1. 内部是什么

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

2.5.2. Maven 协调

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

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

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

2.5.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.6. AWS 2 Lambda

使用 AWS SDK 版本 2.x 管理并调用 AWS Lambda 功能。

2.6.1. 内部是什么

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

2.6.2. Maven 协调

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

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

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

2.6.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.6.4. 其他 Camel Quarkus 配置

通过quarkus-amazon-lambda 扩展,您可以使用 Quarkus 来构建 AWS Lambdas,而 Camel 组件管理(deploy, undeploy, …​)现有功能。因此,无法将 quarkus-amazon-lambda 用作 Camel aws2-lambda 扩展的客户端。

2.7. AWS 2 S3 Storage Service

使用 AWS SDK 版本 2.x 从 AWS S3 Storage Service 存储和检索对象。

2.7.1. 内部是什么

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

2.7.2. Maven 协调

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

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

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

2.7.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.7.4. 其他 Camel Quarkus 配置

2.7.4.1. 可选与 Quarkus Amazon S3 集成

如果需要,可以结合使用 Quarkus Amazon S3 扩展和 Camel Quarkus AWS 2 S3 Storage Service。请注意,这完全是可选的,根本不强制使用。请按照 Quarkus 文档,但请注意以下注意事项:

  1. 必须通过配置以下属性来选择客户端类型 apache

    quarkus.s3.sync-client.type=apache
    Copy to Clipboard Toggle word wrap
  2. S3Client 必须在 Quarkus CDI 参考 的意义中"不可移动"进行,以便 Camel Quarkus 能够在运行时查看它。您可以通过添加 dummy bean 注入 S3Client 来访问该,例如:

    import javax.enterprise.context.ApplicationScoped;
    import io.quarkus.arc.Unremovable;
    import software.amazon.awssdk.services.s3.S3Client;
    
    @ApplicationScoped
    @Unremovable
    class UnremovableS3Client {
        @Inject
        S3Client s3Client;
    }
    Copy to Clipboard Toggle word wrap

2.8. AWS 2 Simple Notification System (SNS)

使用 AWS SDK 版本 2.x 将信息发送到 AWS Simple Notification 主题。

2.8.1. 内部是什么

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

2.8.2. Maven 协调

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

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

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

2.8.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.8.4. 其他 Camel Quarkus 配置

2.8.4.1. 与 Quarkus Amazon SNS 的可选集成

如果需要,可以将 Quarkus Amazon SNS 扩展与 Camel Quarkus AWS 2 Simple Notification System (SNS)结合使用。请注意,这完全是可选的,根本不强制使用。请按照 Quarkus 文档,但请注意以下注意事项:

  1. 必须通过配置以下属性来选择客户端类型 apache

    quarkus.sns.sync-client.type=apache
    Copy to Clipboard Toggle word wrap
  2. SnsClient 必须在 Quarkus CDI 参考 的意义中"不可移动"进行,以便 Camel Quarkus 能够在运行时查看它。您可以通过添加 dummy bean 注入 SnsClient 来达到该示例:

    import javax.enterprise.context.ApplicationScoped;
    import io.quarkus.arc.Unremovable;
    import software.amazon.awssdk.services.sns.SnsClient;
    
    @ApplicationScoped
    @Unremovable
    class UnremovableSnsClient {
        @Inject
        SnsClient snsClient;
    }
    Copy to Clipboard Toggle word wrap

2.9. AWS 2 Simple Queue Service (SQS)

使用 AWS SDK 版本 2.x 向 AWS SQS 服务发送和接收信息。

2.9.1. 内部是什么

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

2.9.2. Maven 协调

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

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

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

2.9.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.9.4. 其他 Camel Quarkus 配置

2.9.4.1. 与 Quarkus Amazon SQS 的可选集成

如果需要,可以将 Quarkus Amazon SQS 扩展与 Camel Quarkus AWS 2 Simple Queue Service (SQS)结合使用。请注意,这完全是可选的,根本不强制使用。请按照 Quarkus 文档,但请注意以下注意事项:

  1. 必须通过配置以下属性来选择客户端类型 apache

    quarkus.sqs.sync-client.type=apache
    Copy to Clipboard Toggle word wrap
  2. SqsClient 必须在 Quarkus CDI 参考 的意义中"不可移动"进行,以便 Camel Quarkus 能够在运行时查看它。您可以通过添加 dummy bean 注入 SqsClient 来访问那个,例如:

    import javax.enterprise.context.ApplicationScoped;
    import io.quarkus.arc.Unremovable;
    import software.amazon.awssdk.services.sqs.SqsClient;
    
    @ApplicationScoped
    @Unremovable
    class UnremovableSqsClient {
        @Inject
        SqsClient sqsClient;
    }
    Copy to Clipboard Toggle word wrap

2.10. Azure Storage Blob Service

使用 SDK v12 从 Azure Storage Blob Service 存储和检索 Blob。

2.10.1. 内部是什么

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

2.10.2. Maven 协调

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

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

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

2.10.3. 使用方法

2.10.3.1. Micrometer 指标支持

如果要为 Reactor Netty 传输启用 Micrometer 指标集合,您应该声明依赖 Quarkus -micrometer,以确保它们可以通过 Quarkus 指标 HTTP 端点获得。

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-micrometer</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

2.10.4. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.11. Azure Storage Queue Service

azure-storage-queue 组件用于使用 Azure SDK v12 存储和检索信息到 Azure Storage Queue。

2.11.1. 内部是什么

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

2.11.2. Maven 协调

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

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

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

2.11.3. 使用方法

2.11.3.1. Micrometer 指标支持

如果要为 Reactor Netty 传输启用 Micrometer 指标集合,您应该声明依赖 Quarkus -micrometer,以确保它们可以通过 Quarkus 指标 HTTP 端点获得。

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-micrometer</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

2.11.4. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.12. Bean Validator

使用 Java Bean Validation API 验证消息正文。

2.12.1. 内部是什么

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

2.12.2. Maven 协调

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

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

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

2.12.3. 使用方法

2.12.3.1. 配置 ValidatorFactory

此扩展的实施利用 Quarkus Hibernate Validator 扩展

因此,无法通过 Camel 的属性 (constraintValidatorFactory, messageInterpolator, traversableResolver, validationProviderResolvervalidatorFactory) 配置 ValidatorFactory

您可以通过创建 Bean 来配置 ValidatorFactory,它将注入到默认的 ValidatorFactory 中(由 Quarkus 创建)。如需更多信息,请参阅 Quarkus CDI 文档

2.12.3.2. 原生模式的自定义验证组

在原生模式中使用自定义验证组时,需要注册所有接口以进行反映( 请参阅文档)。

例如:

@RegisterForReflection
public interface OptionalChecks {
}
Copy to Clipboard Toggle word wrap

2.12.4. Camel Quarkus 限制

无法将约束描述为 XML (通过提供文件 META-INF/validation.xml),只支持 Java 注解。这是因为 Quarkus Hibernate Validator 扩展的限制(请参阅问题)。

2.13. bean

调用 Java Bean 的方法

2.13.1. 内部是什么

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

2.13.2. Maven 协调

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

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

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

2.13.3. 使用方法

除了调用 Camel registry 中的 Bean 方法外,M Bean 组件和 Bean 方法语言也可以调用 Quarkus CDI Bean。

2.14. bindy

使用 Camel Bindy 在一端和 Comma 分隔值(CSV)、固定字段长度或键值对(KVP)格式的 POJO 之间 marshal 和 unmarshal 之间的 marshal 和 unmarshal

2.14.1. 内部是什么

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

2.14.2. Maven 协调

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

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

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

2.14.3. Camel Quarkus 限制

当在原生模式中使用 camel-quarkus-bindy 时,只支持构建机器的区域设置。

例如,在使用 french 区域构建机器上,以下代码:

BindyDataFormat dataFormat = new BindyDataFormat();
dataFormat.setLocale("ar");
Copy to Clipboard Toggle word wrap

格式按预期在 JVM 模式中编号。但是,它以原生模式格式化 french 编号。

如果没有进一步调优,将使用构建机器的默认区域设置。可使用 quarkus.native.user-languagequarkus.native.user-country 配置属性来指定另一个区域。

2.15. 浏览

检查在支持 BrowsableEndpoint 的端点上收到的消息。

2.15.1. 内部是什么

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

2.15.2. Maven 协调

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

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

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

2.16. Cassandra CQL

使用 CQL3 API (而不是 Thrift API)与 Cassandra 2.0 集成。基于 DataStax 提供的 Cassandra Java 驱动程序。

2.16.1. 内部是什么

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

2.16.2. Maven 协调

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

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

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

2.16.3. 其他 Camel Quarkus 配置

2.16.3.1. 原生模式的 Cassandra 聚合存储库

要在原生模式中使用 Cassandra 聚合存储库(如 CassandraAggregationRepository ),您必须启用原生序列化支持

此外,如果您的交换正文是自定义类型,则必须使用 @RegisterForReflection (serialization = true) 为其类声明添加注解以进行序列化。

2.17. 控制总线

管理和监控 Camel 路由。

2.17.1. 内部是什么

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

2.17.2. Maven 协调

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

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

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

2.17.3. 使用方法

2.17.3.1. Statistics

使用 stats 命令端点时,camel-quarkus-management 扩展必须添加为项目依赖项以启用 JMX。Maven 用户必须在其 pom.xml 中添加以下内容:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-management</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap
2.17.3.2. 语言

在 Camel Extensions for Quarkus 中的 Control Bus 扩展中支持以下语言:

2.17.3.2.1. bean

Bean 语言可用于调用 bean 的方法来控制路由的状态。org.apache.camel.quarkus:camel-quarkus-bean 扩展必须添加到 classpath 中。Maven 用户必须在 POM 中添加以下依赖项:

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

在原生模式中,Bean 类必须使用 @RegisterForReflection 注解。

2.17.3.2.2. Simple(简单)

Simple 语言可用于控制路由的状态。以下示例使用 ProducerTemplate 来停止 ID 为 foo 的路由:

template.sendBody(
    "controlbus:language:simple",
    "${camelContext.getRouteController().stopRoute('foo')}"
);
Copy to Clipboard Toggle word wrap

要使用 OGNL 表示法,必须将 org.apache.camel.quarkus:camel-quarkus-bean 扩展添加为依赖项。

在原生模式中,必须注册 OGNL 标记中使用的类来反映。在上面的代码片段中,必须注册从 camelContext.getRouteController () 返回的 org.apache.camel.spi.RouteController 类。由于这是一个第三方类,它不能直接使用 @RegisterForReflection 进行注释 - 相反,您可以注解不同的类并指定要注册的目标类。例如,定义 Camel 路由的类可以使用 @RegisterForReflection (targets = { org.apache.camel.spi.RouteController.class }) 进行注解。

或者,在 src/main/resources/application.properties 中添加以下行:

quarkus.camel.native.reflection.include-patterns = org.apache.camel.spi.RouteController
Copy to Clipboard Toggle word wrap

2.17.4. Camel Quarkus 限制

2.17.4.1. Statistics

GraalVM 不支持原生模式使用 stats 操作,因为 GraalVM 不支持 JMX。因此,试图在 classpath 上构建带有 camel-quarkus-management 扩展的原生镜像将导致构建失败。

Camel Extensions for Quarkus 不支持此功能。

2.18. Core

Camel 核心功能和基本 Camel 语言/常量、交换属性、Header、Ref、Simple 和 Tokenize

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} is 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
2.18.3.1.4. 通过原生模式的属性配置自定义 bean

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

例如,以下自定义 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 机制发现。excludes 的优先级高于 includes。此处定义的 excludes 还可以用来传递 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 中定义的排除将应用到联合集。示例值: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 中。excludes 的优先级高于 includes。此处定义的 excludes 还可以用来传递 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 中定义的排除将应用到联合集。示例值: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 模式;否则,在 Runtime Camel Catalog 中不提供 EIP 模型 JSON 模式,并试图访问它们将导致 RuntimeException。把它设置为 false 有助于缩小原生镜像的大小。在 JVM 模式中,不将此标志设置为 false 的实际优点是,除了使行为与原生模式一致。

布尔值

true

lock quarkus.camel.routes-discovery.enabled

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

布尔值

true

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

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

字符串

 

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

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

字符串

 

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 风格模式列表,以匹配应排除在 Register for reflection 中的类名称。使用 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 中的 quarkus.index-dependency.* 系列选项 - 例如 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 属于一起的标签。

字符串

 

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.eventsorg.apache.camel.quarkus.main.eventsorg.apache.camel.impl.event 软件包的用户。请注意,此配置项仅在为 Camel 事件配置观察器时才生效。

布尔值

true

lock quarkus.camel.source-location-enabled

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

布尔值

false

lock quarkus.camel.main.shutdown.timeout

等待 CamelMainöstop () 完成超时(带有毫秒精度)

java.time.Duration

PT3S

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

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

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

warn

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

2.19. Cron

通过 Unix cron 语法指定的时间触发事件的通用接口。

2.19.1. 内部是什么

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

2.19.2. Maven 协调

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

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

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

2.19.3. 其他 Camel Quarkus 配置

cron 组件是一个通用接口组件,因为 Camel Quarkus 用户需要将 cron 扩展与提供实施的另一个扩展一起使用。

2.20. CXF

使用 Apache CXF 公开 SOAP WebServices,或使用 CXF WS 客户端连接到外部 WebServices。

2.20.1. 内部是什么

此端点有两个 URI 格式:

cxf:bean:cxfEndpoint
CxfEndpoint 代表一个 bean ID,它引用 Spring bean registry 中的 bean。
cxf://someAddress
someAddress 指定 CXF 端点的地址。

有关使用和配置详情,请参阅 CXF 组件

2.20.2. Maven 协调

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

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

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

2.20.3. 使用方法

2.20.3.1. General

camel-quarkus-cxf-soap 使用 CXF Extensions for Quarkus 项目的扩展 - quarkus-cxf。这意味着 quarkus-cxf 提供了一组支持的用例和 WS 规格。

重要

要了解支持的用例和 WS 规格,请参阅 Quarkus CXF 参考

2.20.3.2. 依赖项管理

Camel Extensions for Quarkus 管理 CXF 和 quarkus-cxf 版本。您不需要为这些项目选择兼容版本。

2.20.3.3. 客户端

使用 camel-quarkus-cxf-soap (不需要额外的依赖项),您可以在 Camel 路由中使用 CXF 客户端作为制作者:

import org.apache.camel.builder.RouteBuilder;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Named;

@ApplicationScoped
public class CxfSoapClientRoutes extends RouteBuilder {

    @Override
    public void configure() {

        /* You can either configure the client inline */
        from("direct:cxfUriParamsClient")
                .to("cxf://http://localhost:8082/calculator-ws?wsdlURL=wsdl/CalculatorService.wsdl&dataFormat=POJO&serviceClass=org.foo.CalculatorService");

        /* Or you can use a named bean produced below by beanClient() method */
        from("direct:cxfBeanClient")
                .to("cxf:bean:beanClient?dataFormat=POJO");

    }

    @Produces
    @SessionScoped
    @Named
    CxfEndpoint beanClient() {
        final CxfEndpoint result = new CxfEndpoint();
        result.setServiceClass(CalculatorService.class);
        result.setAddress("http://localhost:8082/calculator-ws");
        result.setWsdlURL("wsdl/CalculatorService.wsdl"); // a resource in the class path
        return result;
    }
}
Copy to Clipboard Toggle word wrap

CalculatorService 可能类似如下:

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService(targetNamespace = CalculatorService.TARGET_NS)
public interface CalculatorService {

    public static final String TARGET_NS = "http://acme.org/wscalculator/Calculator";

    @WebMethod
    public int add(int intA, int intB);

    @WebMethod
    public int subtract(int intA, int intB);

    @WebMethod
    public int divide(int intA, int intB);

    @WebMethod
    public int multiply(int intA, int intB);
}
Copy to Clipboard Toggle word wrap
注意

JAX-WS 注释是必需的。不支持简单 CXF Frontend。复杂的参数类型需要 JAXB 注释才能在原生模式下正常工作。

提示

您可以针对实现此服务端点接口的 quay.io/l2x6/calculator-ws:1.2 容器测试此客户端应用程序:

$ docker run -p 8082:8080 quay.io/l2x6/calculator-ws:1.2
Copy to Clipboard Toggle word wrap
注意

Quarkus-cxf 支持使用 @io.quarkiverse.cxf.annotation.CXFClient 注释 注入 SOAP 客户端。如需了解更多详细信息,请参阅 quarkus-cxf 用户指南中的 SOAP 客户端 章节。

2.20.3.4. Server

使用 camel-quarkus-cxf-soap 时,您可以将 SOAP 端点公开为 Camel 路由中的消费者。这个用例不需要额外的依赖项。

import org.apache.camel.builder.RouteBuilder;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Named;

@ApplicationScoped
public class CxfSoapRoutes extends RouteBuilder {

    @Override
    public void configure() {
        /* A CXF Service configured through a CDI bean */
        from("cxf:bean:helloBeanEndpoint")
                .setBody().simple("Hello ${body} from CXF service");

        /* A CXF Service configured through Camel URI parameters */
        from("cxf:///hello-inline?wsdlURL=wsdl/HelloService.wsdl&serviceClass=org.foo.HelloService")
                        .setBody().simple("Hello ${body} from CXF service");
    }

    @Produces
    @ApplicationScoped
    @Named
    CxfEndpoint helloBeanEndpoint() {
        final CxfEndpoint result = new CxfEndpoint();
        result.setServiceClass(HelloService.class);
        result.setAddress("/hello-bean");
        result.setWsdlURL("wsdl/HelloService.wsdl");
        return result;
    }
}
Copy to Clipboard Toggle word wrap

这两个服务的路径取决于 quarkus.cxf.path 配置属性值,该配置属性值 可在 application.properties 中设置:

application.properties

quarkus.cxf.path = /soap-services
Copy to Clipboard Toggle word wrap

使用这个配置,您可以分别访问 http://localhost:8080/soap-services/hello-beanhttp://localhost:8080/soap-services/hello-inline 这两个服务。

您可以通过将 ?wsdl 添加到上述 URL 来访问 WSDL。

重要

除非在 100% 确保没有其他扩展需要公开 HTTP 端点,否则不要在应用程序中使用 quarkus.cxf.path = /

从 CEQ 2.13.3 开始,quarkus.cxf.path 的默认值为 /。默认值将阻止其他扩展公开 HTTP 端点。

这会影响 RESTEasy、Vert.x、小型健康等。如果使用其中任何一个,您应该将 quarkus.cxf.path 设置为某些特定路径,如 /services,这是从 Camel Extensions for Quarkus 3.0.0 / quarkus-cxf 2.0.0 开始的默认设置。

注意

Quarkus-cxf 支持公开 SOAP 端点的替代方法。如需了解更多详细信息,请参阅 quarkus-cxf 用户指南中的 SOAP 服务章节。

2.20.3.5. 日志记录请求和响应

您可以为使用 org.apache.cxf.ext.logging.LoggingFeature 的客户端和服务器启用 SOAP 消息的详细日志记录:

import org.apache.camel.builder.RouteBuilder;
import org.apache.cxf.ext.logging.LoggingFeature;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.SessionScoped;
import javax.enterprise.inject.Produces;
import javax.inject.Named;

@ApplicationScoped
public class MyBeans {

    @Produces
    @ApplicationScoped
    @Named("prettyLoggingFeature")
    public LoggingFeature prettyLoggingFeature() {
        final LoggingFeature result = new LoggingFeature();
        result.setPrettyLogging(true);
        return result;
    }

    @Inject
    @Named("prettyLoggingFeature")
    LoggingFeature prettyLoggingFeature;

    @Produces
    @SessionScoped
    @Named
    CxfEndpoint cxfBeanClient() {
        final CxfEndpoint result = new CxfEndpoint();
        result.setServiceClass(CalculatorService.class);
        result.setAddress("https://acme.org/calculator");
        result.setWsdlURL("wsdl/CalculatorService.wsdl");
        result.getFeatures().add(prettyLoggingFeature);
        return result;
    }

    @Produces
    @ApplicationScoped
    @Named
    CxfEndpoint helloBeanEndpoint() {
        final CxfEndpoint result = new CxfEndpoint();
        result.setServiceClass(HelloService.class);
        result.setAddress("/hello-bean");
        result.setWsdlURL("wsdl/HelloService.wsdl");
        result.getFeatures().add(prettyLoggingFeature);
        return result;
    }
}
Copy to Clipboard Toggle word wrap
注意

io.quarkiverse.cxf:quarkus-cxf-rt-features-logging 支持 org.apache.cxf.ext.logging.LoggingFeature 作为 camel-quarkus-cxf-soap 依赖项。

您不需要显式将其添加到应用程序中。

2.20.3.6. WS 规格

支持的 WS 规格的扩展由 Quarkus CXF 项目提供。

重要

要了解支持的用例和 WS 规格,请参阅 Quarkus CXF 参考

如果您的应用程序需要一些其他 WS 规格,您必须添加涵盖它的 Quarkus CXF 依赖项。

在 Camel Extensions for Quarkus 中,我们支持使用支持级别 Stable 列出的所有扩展。

提示

您可以使用集成测试作为实现各种 WS 规格的应用程序的可执行示例:

2.20.3.7. 工具

Quarkus-cxf 包装以下两个 CXF 工具:

重要

要使 wsdl2Java 正常工作,您的应用程序必须直接依赖于 io.quarkiverse.cxf:quarkus-cxf

提示

虽然不支持 wsdlvalidator,但您可以使用 wsdl2Javaapplication.properties 中的以下配置来验证 WSDL:

application.properties

quarkus.cxf.codegen.wsdl2java.additional-params = -validate
Copy to Clipboard Toggle word wrap

2.21. 数据格式

使用 Camel 数据格式作为常规 Camel 组件。

有关 Camel Extensions for Quarkus 中支持的数据格式的详情,请参阅支持的数据格式

2.21.1. 内部是什么

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

2.21.2. Maven 协调

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

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

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

2.22. dataset

提供 Camel 应用程序的负载和 soak 测试数据。

2.22.1. 内部是什么

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

2.22.2. Maven 协调

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

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

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

2.23. direct

同步调用来自同一 Camel 上下文的另一个端点。

2.23.1. 内部是什么

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

2.23.2. Maven 协调

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

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

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

2.24. FHIR

使用 FHIR (Fast Healthcare Interoperability Resources)标准在电信域中交换信息。Marshall 和 unmarshall FHIR 对象到/从 JSON。Marshall 和 unmarshall FHIR 对象到/来自 XML。

2.24.1. 内部是什么

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

2.24.2. Maven 协调

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

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

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

2.24.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.24.4. 其他 Camel Quarkus 配置

默认情况下,只有 FHIR 版本 R4DSTU3 以原生模式启用,因为它们是 FHIR 组件和 DataFormat 上的默认值。

Expand
配置属性类型默认

lock quarkus.camel.fhir.enable-dstu2

在原生模式下启用 FHIR DSTU2 Specs。

布尔值

false

lock quarkus.camel.fhir.enable-dstu2_hl7org

以原生模式启用 FHIR DSTU2_HL7ORG Specs。

布尔值

false

lock quarkus.camel.fhir.enable-dstu2_1

在原生模式下启用 FHIR DSTU2_1 Specs。

布尔值

false

lock quarkus.camel.fhir.enable-dstu3

在原生模式下启用 FHIR DSTU3 Specs。

布尔值

false

lock quarkus.camel.fhir.enable-r4

在原生模式下启用 FHIR R4 Specs。

布尔值

true

lock quarkus.camel.fhir.enable-r5

在原生模式下启用 FHIR R5 Specs。

布尔值

false

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

2.25. File

读取和写入文件。

2.25.1. 内部是什么

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

2.25.2. Maven 协调

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

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

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

2.25.3. 其他 Camel Quarkus 配置

当将同一路由部署到多个 JVM 时,最好将这个扩展与 Master 结合使用。在这种情况下,单个消费者将在整个 camel master 命名空间间处于活跃状态。

例如,在多个 JVM 上部署了以下路由:

from("master:ns:timer:test?period=100").log("Timer invoked on a single JVM at a time");
Copy to Clipboard Toggle word wrap

可以使用如下属性启用集群集群服务:

quarkus.camel.cluster.file.enabled = true
quarkus.camel.cluster.file-root = target/cluster-folder-where-lock-file-will-be-held
Copy to Clipboard Toggle word wrap

因此,单个消费者将在 ns camel master 命名空间中激活。这意味着,在一个给定时间点上,只有一个计时器将生成所有 JVM 的交换。换句话说,在某个时间点上,消息将在单个 JVM 上每 100ms 进行一次日志记录。

文件集群服务可以通过 quarkus.camel.cluster.file.* 属性进一步进行调整。

Expand
配置属性类型默认

lock quarkus.camel.cluster.file.enabled

文件锁定群集服务是否应根据 'quarkus.camel.cluster.file.*' 配置自动配置。

布尔值

false

lock quarkus.camel.cluster.file-id

集群服务 ID (默认为 null)。

字符串

 

lock quarkus.camel.cluster.file-root

根路径(默认为 null)。

字符串

 

lock quarkus.camel.cluster.file-order

服务查找顺序/优先级(默认为 2147482647)。

java.lang.Integer

 

lock quarkus.camel.cluster.file.acquire-lock-delay

开始尝试获取锁定前等待的时间(默认为 1000ms)。

字符串

 

lock quarkus.camel.cluster.file.acquire-lock-interval

尝试获取锁定之间等待的时间(默认为 10000ms)。

字符串

 

lock quarkus.camel.cluster.file.attributes

与服务关联的自定义属性(默认为空映射)。

Map<String,String>

 

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

2.26. FTP

将文件上传到 SFTP、FTP 或者 SFTP 服务器

2.26.1. 内部是什么

  • FTP 组件, URI 语法: ftp:host:port/directoryName
  • FTPS 组件, URI 语法: ftps:host:port/directoryName
  • SFTP 组件, URI 语法: sftp:host:port/directoryName

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

2.26.2. Maven 协调

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

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

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

2.27. gson

marshal POJOs 到 JSON,并使用 Gson 重新

2.27.1. 内部是什么

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

2.27.2. Maven 协调

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

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

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

2.27.3. 其他 Camel Quarkus 配置

2.27.3.1. 原生模式的 marshaling/Unmarshaling 对象

当以原生模式 marshaling/unmarshaling 对象时,需要 注册 所有序列化类来反映。因此,当使用 GsonDataFormat.setUnmarshalType (…​), GsonDataFormat.setUnmarshalTypeName (…​),甚至 GsonDataFormat.setUnmarshalType (…​) 时,应注册 unmarshal 类型以及子字段类型来反映。请参见此集成测试中的工作示例。

2.28. Google BigQuery

使用 SQL 查询或 Google Client Services API 访问 Google Cloud BigQuery 服务

2.28.1. 内部是什么

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

2.28.2. Maven 协调

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

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

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

2.28.3. 使用方法

如果要在原生模式下使用 google-bigquery-sql 从 classpath 读取 SQL 脚本,则需要确保通过 quarkus.native.resources.includes 配置属性将它们添加到原生镜像中。请参阅 Quarkus 文档了解更多详情。

2.29. Google Pubsub

向 Google Cloud Platform PubSub Service 发送和接收消息。

2.29.1. 内部是什么

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

2.29.2. Maven 协调

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

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

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

2.29.3. Camel Quarkus 限制

默认情况下,当消息正文不是 Stringbyte[] 外,Camel PubSub 组件使用 JDK 对象序列化通过 ObjectOutputStream 进行序列化。

由于 GraalVM 尚不支持这种序列化,因此此扩展提供了一个基于 Jackson 的序列化程序来序列化复杂消息有效负载作为 JSON。

如果您的有效负载包含二进制数据,则需要通过创建自定义 Jackson Serializer / Deserializer 来处理这一数据。有关如何进行此操作的信息,请参阅 Quarkus Jackson 指南

2.30. HL7

使用 HL7 MLLP codec marshal 和 unmarshal HL7 (Health Liberty)模型对象。

2.30.1. 内部是什么

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

2.30.2. Maven 协调

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

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

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

2.30.3. Camel Quarkus 限制

对于使用 TCP 的 MLLP,Netty 是运行 Hl7 MLLP 侦听程序唯一支持的方法。不支持 mina,因为它目前没有 GraalVM 原生支持。

可选的对 HL7MLLPNettyEncoderFactory & HL7MLLPNettyDecoderFactory codecs 的支持可以通过在您的项目 pom.xml 中将依赖项添加到 camel-quarkus-netty 实现。

2.31. HTTP

使用 Apache HTTP 客户端 4.x 向外部 HTTP 服务器发送请求。

2.31.1. 内部是什么

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

2.31.2. Maven 协调

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

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

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

2.31.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.31.4. 其他 Camel Quarkus 配置

  • 如果您希望应用程序使用非默认编码发送或接收请求,请检查原生模式指南的 Character encodings 部分

2.32. Infinispan

从/写入 Infinispan 分布式键/值存储和数据网格。

2.32.1. 内部是什么

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

2.32.2. Maven 协调

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

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

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

2.32.3. 其他 Camel Quarkus 配置

2.32.3.1. Infinispan 客户端配置

您可以通过相关的 Camel Infinispan 组件和端点选项配置 Infinispan 客户端,也可以使用 Quarkus Infinispan 扩展配置属性

如果您选择在原生模式中使用 InfinispanRemoteAggregationRepository则必须启用原生序列化支持

2.33. Jacks

marshal POJOs 到 JSON,并使用 Jackson 回来

2.33.1. 内部是什么

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

2.33.2. Maven 协调

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

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

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

2.33.3. 使用方法

2.33.3.1. 配置 Jackson ObjectMapper

有几种方法来配置 JacksonDataFormat 使用的对象 映射程序。下面概述了它们。

2.33.3.1.1. JacksonDataFormat内部创建的 ObjectMapper

默认情况下,JacksonDataFormat 将创建自己的 对象映射 程序,并使用 DataFormat 上的各种配置选项来配置额外的 Jackson 模块、用户友善的打印和其他功能。

您可以将自定义 ObjectMapper 实例传递给 JacksonDataFormat,如下所示:

import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;

public class Routes extends RouteBuilder {
    public void configure() {
        ObjectMapper mapper = new ObjectMapper();
        JacksonDataFormat dataFormat = new JacksonDataFormat();
        dataFormat.setObjectMapper(mapper);
        // Use the dataFormat instance in a route definition
        from("direct:my-direct").marshal(dataFormat)
    }
}
Copy to Clipboard Toggle word wrap

Quarkus Jackson 扩展公开一个 ObjectMapper CDI bean,可通过 JacksonDataFormat 发现。

import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;

public class Routes extends RouteBuilder {
    public void configure() {
        JacksonDataFormat dataFormat = new JacksonDataFormat();
        // Make JacksonDataFormat discover the Quarkus Jackson `ObjectMapper` from the Camel registry
        dataFormat.setAutoDiscoverObjectMapper(true);
        // Use the dataFormat instance in a route definition
        from("direct:my-direct").marshal(dataFormat)
    }
}
Copy to Clipboard Toggle word wrap

如果您在 Camel REST DSL 中使用 JSON 绑定模式,并希望使用 Quarkus Jackson ObjectMapper,如下所示:

import org.apache.camel.builder.RouteBuilder;

@ApplicationScoped
public class Routes extends RouteBuilder {
    public void configure() {
        restConfiguration().dataFormatProperty("autoDiscoverObjectMapper", "true");
        // REST definition follows...
    }
}
Copy to Clipboard Toggle word wrap

您可以在带有 ObjectMapperCustomizer 的 Quarkus ObjectMapper 中执行自定义。

import com.fasterxml.jackson.databind.ObjectMapper;
import io.quarkus.jackson.ObjectMapperCustomizer;

@Singleton
public class RegisterCustomModuleCustomizer implements ObjectMapperCustomizer {
    public void customize(ObjectMapper mapper) {
        mapper.registerModule(new CustomModule());
    }
}
Copy to Clipboard Toggle word wrap

也可以 @Inject the Quarkus ObjectMapper 并将其传递给 JacksonDataFormat

import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.jackson.JacksonDataFormat;

@ApplicationScoped
public class Routes extends RouteBuilder {
    @Inject
    ObjectMapper mapper;

    public void configure() {
        JacksonDataFormat dataFormat = new JacksonDataFormat();
        dataFormat.setObjectMapper(mapper);
        // Use the dataFormat instance in a route definition
        from("direct:my-direct").marshal(dataFormat)
    }
}
Copy to Clipboard Toggle word wrap

2.34. Avro Jackson

marshal POJOs 到 Avro,并使用 Jackson 回来。

2.34.1. 内部是什么

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

2.34.2. Maven 协调

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

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

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

2.35. protobuf Jackson

marshal POJOs 到 Protobuf,并使用 Jackson 回来。

2.35.1. 内部是什么

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

2.35.2. Maven 协调

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

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

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

2.36. JacksonXML

将 XML 有效负载解压缩为 POJO,并使用 Jackson 的 XMLMapper 扩展返回。

2.36.1. 内部是什么

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

2.36.2. Maven 协调

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

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

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

2.37. JAXB

将 XML 有效负载解压缩为 POJO,并使用 JAXB2 XML marshalling 标准。

2.37.1. 内部是什么

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

2.37.2. Maven 协调

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

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

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

2.37.3. 使用方法

使用自定义 ObjectFactory 执行 JAXB marshal 操作时,以实例化没有 JAXB 注解的 POJO 类,您必须注册这些 POJO 类来反映它们以原生模式实例化。例如,通过 @RegisterForReflection 注释或配置属性 quarkus.camel.native.reflection.include-patterns

如需更多信息 ,请参阅原生模式 用户指南。

2.38. JDBC

通过 SQL 和 JDBC 访问数据库。

2.38.1. 内部是什么

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

2.38.2. Maven 协调

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

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

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

2.38.3. 其他 Camel Quarkus 配置

2.38.3.1. 配置数据源

此扩展利用 Quarkus Agroal 用于 DataSource 支持。可以通过 配置属性 实现数据源。建议您显式命名数据源,以便在 JDBC 端点 URI 中引用它。e.g like to ("jdbc:camel").

quarkus.datasource.camel.db-kind=postgresql
quarkus.datasource.camel.username=your-username
quarkus.datasource.camel.password=your-password
quarkus.datasource.camel.jdbc.url=jdbc:postgresql://localhost:5432/your-database
quarkus.datasource.camel.jdbc.max-size=16
Copy to Clipboard Toggle word wrap

如果选择不命名数据源,您可以通过定义端点 ("jdbc:default") 来解析默认的 DataSource

2.38.3.1.1. 使用 Quarkus Dev 服务进行零配置

在 dev 和 test 模式中,您可以利用 配置空闲数据库。您需要做的只是引用路由中的默认数据库。e.g to ("jdbc:default").

2.39. Jira

与 JIRA 问题跟踪器交互。

2.39.1. 内部是什么

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

2.39.2. Maven 协调

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

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

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

2.39.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.40. JMS

发送和接收来自 JMS Queue 或 Topic 的信息。

2.40.1. 内部是什么

  • JMS 组件, URI 语法: jms:destinationType:destinationName

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

2.40.2. Maven 协调

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

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

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

2.40.3. 使用方法

2.40.3.1. 带有 org.w3c.dom.Node的消息映射

Camel JMS 组件支持 javax.jms.Messageorg.apache.camel.Message 之间的消息映射。当希望转换 org.w3c.dom.Node 的 Camel 消息正文类型时,您必须确保 classpath 上存在 camel-quarkus-jaxp 扩展。

2.40.3.2. 对 javax.jms.ObjectMessage 的原生模式支持

将 JMS 消息有效负载作为 javax.jms.ObjectMessage 发送时,您必须注解相关类以使用 @RegisterForReflection (serialization = true) 进行序列化。请注意,这个扩展会自动为您设置 quarkus.camel.native.reflection.serialization-enabled = true。如需更多信息,请参阅 原生模式用户指南

2.40.3.3. 支持连接池和 X/Open XA 分布式事务
注意

连接池在此发行版本中为 Quarkus 的 Camel Extensions 是一个技术预览功能。

要在 camel-quarkus-jms 组件中使用连接池,您必须将 io.quarkiverse.artemis:quarkus-artemisio.quarkiverse.messaginghub:quarkus-pooled-jms 添加到 pom.xml 中,并设置以下配置:

quarkus.pooled-jms.max-connections = 8
Copy to Clipboard Toggle word wrap

您可以使用 quarkus-pooled-jms 扩展来获取对 JMS 连接的池和 XA 支持。如需更多信息,请参阅 quarkus-pooled-jms 扩展文档。目前,它只适用于 quarkus-artemis-jms 扩展。只需将这两个依赖项添加到 pom.xml 中:

<dependency>
    <groupId>io.quarkiverse.messaginghub</groupId>
    <artifactId>quarkus-pooled-jms</artifactId>
</dependency>
<dependency>
    <groupId>io.quarkiverse.artemis</groupId>
    <artifactId>quarkus-artemis-jms</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

请注意,池会被默认启用。

要启用 XA,您需要在 application.properties 中添加以下配置:

quarkus.pooled-jms.xa.enabled=true
Copy to Clipboard Toggle word wrap
注意

池连接不支持 clientIDdurableSubscriptionName。如果在池 重复使用 的连接上调用 setClientID,则会抛出 IllegalStateException。您将收到一些错误消息,如 Cause: setClientID 只能在创建连接后直接调用

2.40.4. 原生模式中的 transferException 选项

要在原生模式中使用 transferException 选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南

您还需要为您要序列化的异常类启用序列化。例如:

@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
Copy to Clipboard Toggle word wrap

2.41. JPA

使用 Java Persistence API (DSL)从数据库存储和检索 Java 对象。

2.41.1. 内部是什么

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

2.41.2. Maven 协调

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

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

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

2.41.3. 其他 Camel Quarkus 配置

扩展利用 Quarkus Hibernate ORM 通过 Hibernate 提供 JPA 实现。

请参阅 Quarkus Hibernate ORM 文档以了解如何配置 Hibernate 和数据源,

当使用单一持久性单元时,Camel Quarkus JPA 扩展将使用 EntityManagerFactoryTransactionManager 自动配置 JPA 组件。

2.42. JSON 路径

针对 JSON 消息正文评估 JSONPath 表达式

2.42.1. 内部是什么

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

2.42.2. Maven 协调

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

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

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

2.43. JTA

使用 Java Transaction API (JTA)和 Narayana 事务管理器将 Camel 路由包含在事务中

2.43.1. 内部是什么

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

2.43.2. Maven 协调

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

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

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

2.43.3. 使用方法

当您需要在路由器中使用转换 ()EIP 时, 应添加此扩展。它利用 Quarkus 中的 narayana-jta 扩展提供的事务功能。

有关事务支持的详情,请参阅 Quarkus Transaction 指南。对于简单用途:

from("direct:transaction")
    .transacted()
    .to("sql:INSERT INTO A TABLE ...?dataSource=ds1")
    .to("sql:INSERT INTO A TABLE ...?dataSource=ds2")
    .log("all data are in the ds1 and ds2")
Copy to Clipboard Toggle word wrap

为各种事务策略提供支持。

Expand
策略描述

PROPAGATION_MANDATORY

支持当前事务;如果没有当前事务,则抛出异常。

PROPAGATION_NEVER

不支持当前事务;如果存在当前事务,则抛出异常。

PROPAGATION_NOT_SUPPORTED

不支持当前的事务,而是始终执行非事务。

PROPAGATION_REQUIRED

支持当前事务;如果不存在,创建一个新事务。

PROPAGATION_REQUIRES_NEW

创建新事务,并在存在当前事务时挂起当前的事务。

PROPAGATION_SUPPORTS

支持当前事务;如果不存在,则执行非事务。

2.44. JSLT

使用 JSLT 查询或转换 JSON 有效负载。

2.44.1. 内部是什么

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

2.44.2. Maven 协调

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

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

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

2.44.3. 原生模式中的 allowContextMapAll 选项

原生模式下不支持 allowContextMapAll 选项,因为它需要对安全敏感 camel 内核类(如 CamelContextExchange )进行反映访问。这被视为安全风险,因此默认不提供对该功能的访问。

2.44.4. 其他 Camel Quarkus 配置

2.44.4.1. 从原生模式的类路径加载 JSLT 模板

此组件通常从 classpath 加载模板。要使它也以原生模式工作,您需要使用 quarkus.native.resources.includes 属性将模板文件明确嵌入到原生可执行文件中。

例如,以下路由将从名为 transformation.json 的类路径资源加载 JSLT 模式:

from("direct:start").to("jslt:transformation.json");
Copy to Clipboard Toggle word wrap

要在原生镜像中包含它(可能存储在 .json 文件中的其他模板),您必须将类似如下的内容添加到 application.properties 文件中:

quarkus.native.resources.includes = *.json
Copy to Clipboard Toggle word wrap
2.44.4.2. 在原生模式中使用 JSLT 功能

当在原生模式下使用 camel-quarkus 中的 JSLT 功能时,需要 注册托管函数的类来反映。当无法注册目标功能时,可能会最终编写 stub,如下所示。

@RegisterForReflection
public class MathFunctionStub {
    public static double pow(double a, double b) {
        return java.lang.Math.pow(a, b);
    }
}
Copy to Clipboard Toggle word wrap

目标功能 Math.pow (…​) 现在可以通过 MathFunctionStub 类访问,这些类可以在组件中注册,如下所示:

@Named
JsltComponent jsltWithFunction() throws ClassNotFoundException {
    JsltComponent component = new JsltComponent();
    component.setFunctions(singleton(wrapStaticMethod("power", "org.apache.cq.example.MathFunctionStub", "pow")));
    return component;
}
Copy to Clipboard Toggle word wrap

2.45. Kafka

发送和接收来自 Apache Kafka 代理的信息。

2.45.1. 内部是什么

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

2.45.2. Maven 协调

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

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

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

2.45.3. 使用方法

2.45.3.1. Quarkus Kafka Dev Services

Camel Quarkus Kafka 可以使用 Quarkus Kafka Dev 服务 来简化使用本地容器化 Kafka 代理的开发和测试。

在 dev 和 test 模式中默认启用 Kafka Dev Services。Camel Kafka 组件会自动配置,以便 brokers 组件选项被设置为指向本地容器化 Kafka 代理。这代表,无需自行配置这个选项。

可以使用配置属性 quarkus.kafka.devservices.enabled=false 来禁用此功能。

2.45.4. 其他 Camel Quarkus 配置

Expand
配置属性类型默认

quarkus.camel.kafka.kubernetes-service-binding.merge-configuration

如果为 true,则 Quarkus Kubernetes Service Binding 扩展(如果配置了)发现的任何 Kafka 配置属性都将与通过 Camel Kafka 组件或端点选项设置进行合并。如果为 false,则 Quarkus Kubernetes Service Binding 扩展发现的任何 Kafka 配置属性都会被忽略,所有 Kafka 组件配置都由 Camel 驱动。

布尔值

true

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

2.46. kamelet

材料化路由模板

2.46.1. 内部是什么

  • kamelet 组件, URI 语法: kamelet:templateId/routeId

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

2.46.2. Maven 协调

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

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

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

2.46.3. 使用方法

2.46.3.1. 构建时预加载 Kamelets

此扩展允许使用 quarkus.camel.kamelet.identifiers 属性在构建时预加载一组 Kamelets。

2.46.3.2. 使用 Kamelet Catalog

可以在 /camel-kamelets/latest[Kamelet Catalog] 中找到一组 pre-made Kamelets。要使用目录中的 Kamelet,您需要复制其 yaml 定义(您可以在 classpath 项目中的 camel-kamelet repo中找到)。或者,您可以将 camel-kamelets-catalog 工件添加到 pom.xml 中:

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

此工件将目录中所有可用的 kamelets 添加到 Camel Quarkus 应用程序,以进行构建时间处理。如果您包括了它并提供了范围,工件不应是运行时类路径的一部分,但在构建时,所有通过 quarkus.camel.kamelet 列出的所有 kamelets 属性列出的 kamelets 都应该被预加载。

2.46.4. 其他 Camel Quarkus 配置

Expand
配置属性类型默认

lock quarkus.camel.kamelet.identifiers

构建时预加载的 kamelets 标识符列表。每个单独的标识符都用于设置相关的 org.apache.camel.model.RouteTemplateDefinition id。

字符串

 

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

2.47. Kubernetes

对 Kubernetes API 执行操作

2.47.1. Maven 协调

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

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

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

2.47.2. 其他 Camel Quarkus 配置

重要

在这个 Camel Extensions for Quarkus 发行版本中,只有将 camel-quarkus-master 扩展用作集群服务时,才支持 camel-quarkus-kubernetes 扩展。另外,为了支持 camel-quarkus-kubernetes 扩展,您必须在应用程序中明确添加对 quarkus-openshift-client 扩展的依赖项。

2.47.2.1. 自动注册 Kubernetes 客户端实例

扩展会自动注册名为 kubernetesClient 的 Kubernetes 客户端 Bean。您可以在路由中引用 bean,如下所示:

from("direct:pods")
    .to("kubernetes-pods:///?kubernetesClient=#kubernetesClient&operation=listPods")
Copy to Clipboard Toggle word wrap

默认情况下,客户端从本地 kubeconfig 文件中配置。您可以通过 application.properties 中的属性自定义客户端配置:

quarkus.kubernetes-client.master-url=https://my.k8s.host
quarkus.kubernetes-client.namespace=my-namespace
Copy to Clipboard Toggle word wrap

完整的配置选项包括在 Quarkus Kubernetes 客户端指南 中。

当将同一路由部署到多个 pod 时,最好将这个扩展与 Master 结合使用。在这种情况下,单个消费者将在整个 camel master 命名空间间处于活跃状态。

例如,在多个 pod 上部署了以下路由:

from("master:ns:timer:test?period=100").log("Timer invoked on a single pod at a time");
Copy to Clipboard Toggle word wrap

可使用类似如下的属性启用 kubernetes 集群服务:

quarkus.camel.cluster.kubernetes.enabled = true
Copy to Clipboard Toggle word wrap

因此,单个消费者将在 ns camel master 命名空间中激活。这意味着,在一个给定时间,只有一个计时器将在整个集群中生成交换。换句话说,在某个时间点上,消息将在单个 pod 上每 100ms 进行一次日志记录。

kubernetes 集群服务可以通过调整 quarkus.camel.cluster.kubernetes the 属性来 进一步调整。

Expand
配置属性类型默认

lock quarkus.camel.cluster.kubernetes.enabled

Kubernetes 集群服务是否应根据 'quarkus.camel.cluster.kubernetes.*' 配置自动配置。

布尔值

false

lock quarkus.camel.cluster.kubernetes-id

集群服务 ID (默认为 null)。

字符串

 

lock quarkus.camel.cluster.kubernetes.master-url

Kubernetes master 的 URL (默认为 Kubernetes 客户端属性读取)。

字符串

 

lock quarkus.camel.cluster.kubernetes.connection-timeout-millis

向 Kubernetes API 服务器发出请求时使用的连接超时(毫秒)。

java.lang.Integer

 

lock quarkus.camel.cluster.kubernetes.namespace

包含 pod 和 configmap 的 Kubernetes 命名空间的名称(默认自动检测到)。

字符串

 

lock quarkus.camel.cluster.kubernetes.pod-name

当前 pod 的名称(默认为从容器主机名中检测)。

字符串

 

lock quarkus.camel.cluster.kubernetes.jitter-factor

要应用 jitter 因素,以防止所有 pod 在同一即时调用 Kubernetes API (默认为 1.2)。

java.lang.Double

 

lock quarkus.camel.cluster.kubernetes.lease-duration-millis

当前领导领导租期的默认持续时间(默认为 15000)。

java.lang.Long

 

lock quarkus.camel.cluster.kubernetes.renew-deadline-millis

领导必须停止其服务的截止时间,因为它可能会丢失领导权(默认为 10000)。

java.lang.Long

 

lock quarkus.camel.cluster.kubernetes.retry-period-millis

连续两次尝试检查并获取领导权利之间的时间。它利用 jitter 因子(默认为 2000)进行自定义。

java.lang.Long

 

lock quarkus.camel.cluster.kubernetes-order

服务查找顺序/优先级(默认为 2147482647)。

java.lang.Integer

 

lock quarkus.camel.cluster.kubernetes.resource-name

用于进行优化锁定的租期资源的名称(默认为"leaders")。当底层 Kubernetes 资源可以管理单个锁定时,资源名称用作前缀。

字符串

 

lock quarkus.camel.cluster.kubernetes.lease-resource-type

Kubernetes 中使用的租期资源类型,可以是 'config-map' 或 'lease'(默认为 'lease')。

org.apache.camel.component.kubernetes.cluster.LeaseResourceType

 

lock quarkus.camel.cluster.kubernetes.rebalancing

camel master 命名空间领导是否应在集群中的所有 camel 上下文中平均分配。

布尔值

true

lock quarkus.camel.cluster.kubernetes-labels

用于识别组成集群的 pod 的键/值,默认为空映射。

Map<String,String>

 

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

2.48. Log

将消息记录到底层日志记录机制。

2.48.1. 内部是什么

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

2.48.2. Maven 协调

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

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

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

2.49. Mail

使用 imap、pop3 和 smtp 协议发送和接收电子邮件。将附件附加到 MIME-Multipart 消息和后端的 marshal Camel 消息。

2.49.1. 内部是什么

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

2.49.2. Maven 协调

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

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

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

2.50. Master

集群中只有一个消费者从给定端点消耗;如果 JVM 结束,则自动故障转移。

2.50.1. 内部是什么

  • master 组件, URI 语法: master:namespace:delegateUri

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

2.50.2. Maven 协调

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

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

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

2.50.3. 其他 Camel Quarkus 配置

此扩展可与以下扩展一起使用:

2.51. MicroProfile Fault Tolerance

使用 Microprofile Fault Tolerance 的断路器 EIP

2.51.1. 内部是什么

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

2.51.2. Maven 协调

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

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

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

2.52. MicroProfile Health

通过 MicroProfile Health 公开 Camel 健康检查

2.52.1. 内部是什么

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

2.52.2. Maven 协调

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

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

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

2.52.3. 使用方法

默认情况下,扩展 AbstractHealthCheck 的类都注册为存活度和就绪度检查。您可以覆盖控制此行为的 isReadiness 方法。

应用程序提供的任何检查都会被自动发现并绑定到 Camel registry。它们将通过 Quarkus 健康端点 /q/health/live/q/health/ready 获得。

您还可以提供自定义 HealthCheckRepository 实现,它们也会自动发现并绑定到 Camel registry。

如需更多信息,请参阅 Quarkus 健康指南

2.52.3.1. 提供的健康检查

一些检查会自动为您的应用程序注册。

2.52.3.1.1. Camel Context Health

检查 Camel 上下文状态,如果状态不是"Started",则会导致健康检查状态为 DOWN

2.52.3.1.2. Camel Route Health

检查每个路由的状态,并在任何路由状态不是"Started"时导致健康检查状态为 DOWN

2.52.4. 其他 Camel Quarkus 配置

Expand
配置属性类型默认

lock quarkus.camel.health.enabled

设置是否启用 Camel 健康检查

布尔值

true

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

2.53. MicroProfile Metrics

从 Camel 路由公开指标。

2.53.1. 内部是什么

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

2.53.2. Maven 协调

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

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

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

2.53.3. 使用方法

microprofile-metrics 组件自动公开一组 Camel 应用程序指标。其中一些包括:

2.53.3.1. Camel 上下文指标
Expand
指标名称类型

camel.context.status

ServiceStatus enum 或dinal 表示的 Camel 上下文的状态

量表

camel.context.uptime

Camel 上下文运行时间(毫秒)

量表

camel.context.exchanges.completed.total

完成的交换总数

计数

camel.context.exchanges.failed.total

失败交换总数

计数

camel.context.exchanges.inflight.total

inflight 交换总数

量表

camel.context.exchanges.total

所有交换的总数

计数

camel.context.externalRedeliveries.total

所有外部 redeliveries 的总数

计数

camel.context.failuresHandled.total

所有故障处理的总数

计数

2.53.3.2. Camel Route 指标
Expand
指标名称类型

camel.route.count

路由数量

量表

camel.route.running.count

正在运行的路由数量

量表

camel.route.exchanges.completed.total

路由已完成的交换总数

计数

camel.route.exchanges.failed.total

路由失败交换总数

计数

camel.route.exchanges.inflight.total

路由 inflight 交换总数

量表

camel.route.exchanges.total

路由的所有交换总数

计数

camel.route.externalRedeliveries.total

路由的所有外部 redeliveries 的总数

计数

camel.route.failuresHandled.total

为路由处理的所有故障总数

计数

所有指标都标有 Camel 上下文的名称以及适用的路由的 id。

您还可以在 Camel 路由中生成自己的自定义指标。如需更多信息,请参阅 microprofile-metrics 组件文档。

指标作为应用程序指标公开给 Quarkus,可以通过 http://localhost:8080/q/metrics/application 浏览它们。

2.53.4. 其他 Camel Quarkus 配置

Expand
配置属性类型默认

lock quarkus.camel.metrics.enable-route-policy

设置是否启用 MicroProfileMetricsRoutePolicyFactory,以便在路由处理时间捕获指标。

布尔值

true

lock quarkus.camel.metrics.enable-message-history

设置是否启用 MicroProfileMetricsMessageHistoryFactory,以便在单个路由节点上捕获指标。根据配置的路由节点的数量,可能会创建大量指标。因此,默认禁用这个选项。

布尔值

false

lock quarkus.camel.metrics.enable-exchange-event-notifier

设置是否启用 MicroProfileMetricsExchangeEventNotifier,以便在交换处理时间捕获指标。

布尔值

true

lock quarkus.camel.metrics.enable-route-event-notifier

设置是否启用 MicroProfileMetricsRouteEventNotifier,以捕获路由总数和运行的路由总数的指标。

布尔值

true

lock quarkus.camel.metrics.enable-camel-context-event-notifier

设置是否启用 MicroProfileMetricsCamelContextEventNotifier 以捕获 CamelContext 的指标,如状态和运行时间。

布尔值

true

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

2.54. MLLP

使用 MLLP 协议与外部系统通信。

2.54.1. 内部是什么

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

2.54.2. Maven 协调

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

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

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

2.54.3. 其他 Camel Quarkus 配置

2.55. Mock

使用模拟测试路由和介质规则。

2.55.1. 内部是什么

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

2.55.2. Maven 协调

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

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

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

2.55.3. 使用方法

要在测试中使用 camel-mock 功能,需要访问 MockEndpoint 实例。

CDI 注入可用于访问实例(请参阅 Quarkus 文档)。您可以使用 @Inject 注释将 camelContext 注入测试。然后,可使用 Camel 上下文来获取模拟端点。请参见以下示例:

import javax.inject.Inject;

import org.apache.camel.CamelContext;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.mock.MockEndpoint;
import org.junit.jupiter.api.Test;

import io.quarkus.test.junit.QuarkusTest;

@QuarkusTest
public class MockJvmTest {

    @Inject
    CamelContext camelContext;

    @Inject
    ProducerTemplate producerTemplate;

    @Test
    public void test() throws InterruptedException {

        producerTemplate.sendBody("direct:start", "Hello World");

        MockEndpoint mockEndpoint = camelContext.getEndpoint("mock:result", MockEndpoint.class);
        mockEndpoint.expectedBodiesReceived("Hello World");

        mockEndpoint.assertIsSatisfied();
    }
}
Copy to Clipboard Toggle word wrap

用于示例测试的路由:

import javax.enterprise.context.ApplicationScoped;

import org.apache.camel.builder.RouteBuilder;

@ApplicationScoped
public class MockRoute extends RouteBuilder {

    @Override
    public void configure() throws Exception {
        from("direct:start").to("mock:result");
    }
}
Copy to Clipboard Toggle word wrap

2.55.4. Camel Quarkus 限制

CDI Bean 的注入(在 Usage 中相同)无法在原生模式下工作。

在原生模式下,测试下的测试和应用程序在两个不同的进程中运行,且无法在它们间共享模拟 Bean (请参阅 Quarkus 文档)。

2.56. MongoDB

对 MongoDB 文档和集合执行操作。

2.56.1. 内部是什么

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

2.56.2. Maven 协调

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

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

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

2.56.3. 其他 Camel Quarkus 配置

扩展利用 Quarkus MongoDB 客户端 扩展。Mongo 客户端可以通过 Quarkus MongoDB Client 配置选项配置

Camel Quarkus MongoDB 扩展会自动注册名为 camelMongoClient 的 MongoDB 客户端 bean。这可以在 mongodb endpoint URI connectionBean path 参数中引用。例如:

from("direct:start")
.to("mongodb:camelMongoClient?database=myDb&collection=myCollection&operation=findAll")
Copy to Clipboard Toggle word wrap

如果您的应用程序需要使用多个 MongoDB 服务器,您可以通过注入客户端和相关配置,在路由中创建"名为"客户端并在路由中引用,如 Quarkus MongoDB 扩展客户端注入 中所述。例如:

//application.properties
quarkus.mongodb.mongoClient1.connection-string = mongodb://root:example@localhost:27017/
Copy to Clipboard Toggle word wrap
//Routes.java

    @ApplicationScoped
    public class Routes extends RouteBuilder {
        @Inject
        @MongoClientName("mongoClient1")
        MongoClient mongoClient1;

        @Override
        public void configure() throws Exception {
            from("direct:defaultServer")
                .to("mongodb:camelMongoClient?database=myDb&collection=myCollection&operation=findAll")

            from("direct:otherServer")
                .to("mongodb:mongoClient1?database=myOtherDb&collection=myOtherCollection&operation=findAll");
        }
    }
Copy to Clipboard Toggle word wrap

请注意,在使用命名客户端时,仍会生成"default" camelMongoClient bean。如需更多信息,请参阅 多个 MongoDB 客户端中的 Quarkus 文档。

2.57. Netty

使用带有 Netty 4.x 的 TCP 或 UDP 的套接字级别网络。

2.57.1. 内部是什么

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

2.57.2. Maven 协调

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

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

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

2.58. OpenAPI Java

公开 Camel REST DSL 中定义的 OpenAPI 资源

2.58.1. 内部是什么

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

2.58.2. Maven 协调

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

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

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

2.58.3. 使用方法

您可以使用此扩展来向 Quarkus OpenAPI 公开 REST DSL 服务。使用 quarkus-smallrye-openapi 时,您可以通过 /q/openapi?format=json 访问它们。

如需更多信息,请参阅 Quarkus OpenAPI 指南

这是一个实验性功能。您可以通过以下方法启用它

quarkus.camel.openapi.expose.enabled=true
Copy to Clipboard Toggle word wrap
警告

用户负责使用 @RegisterForReflection 来注册所有模型类以进行反映。

它目前不支持 org.apache.camel.builder.LambdaRouteBuilder 右侧的其他服务。另外,它无法在 RouteBuilder configure () 中使用 CDI 注入,因为我们在构建时获取其余定义,而 CDI 不可用。

2.58.4. Camel Quarkus 限制

不支持 apiContextIdListing 配置选项。由于 不支持多个 CamelContext,并且 Quarkus 应用程序独立运行,因此没有尝试解析特定 'CamelContext 的 OpenApi 规格 的情况会很有用。它还引入了一些需要 JMX 的开销(不支持原生模式),以及额外的 Camel Quarkus 扩展来处理 XML。

2.59. OpenTelemetry

使用 OpenTelemetry 的分布式追踪

2.59.1. 内部是什么

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

2.59.2. Maven 协调

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

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

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

2.59.3. 使用方法

扩展会自动创建一个 Camel OpenTelemetry Tracer,并将其绑定到 Camel registry。

要将捕获的 trace 发送到追踪系统,您需要在 application.properties 中配置一些属性,如下所示。

# Identifier for the origin of spans created by the application
quarkus.application.name=my-camel-application

# For OTLP
quarkus.opentelemetry.tracer.exporter.otlp.endpoint=http://localhost:4317

# For Jaeger
quarkus.opentelemetry.tracer.exporter.jaeger.endpoint=http://localhost:14250
Copy to Clipboard Toggle word wrap

请注意,您必须在要使用的 OpenTelemetry exporter 中添加依赖项。

目前,Quarkus 支持 Jaeger 和 OpenTelemetry 协议规格(OTLP)。

对于 Jaeger:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-opentelemetry-exporter-jaeger</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

对于 OTLP:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-opentelemetry-exporter-otlp</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

有关配置选项的完整列表,请参阅 Quarkus OpenTelemetry 指南

通过在 application.properties 中配置名为 quarkus.camel.opentelemetry.exclude-patterns 的属性,可以从追踪中排除路由端点。例如:

# Exclude all direct & netty-http endpoints from tracing
quarkus.camel.opentelemetry.exclude-patterns=direct:*,netty-http:*
Copy to Clipboard Toggle word wrap
2.59.3.1. 追踪 CDI bean 方法执行

当从 Camel 路由检测 CDI bean 方法时,您应该为此类方法添加 io.opentelemetry.extension.annotations.WithSpan。使用 @WithSpan 注解的方法将创建一个新的 Span,并与当前 Trace 上下文建立任何所需的关系。

例如,若要从 Camel 路由检测 CDI bean,首先请确保使用 @WithTrace 标注了适当的方法。

@ApplicationScoped
@Named("myBean")
public class MyBean {
    @WithSpan
    public String greet() {
        return "Hello World!";
    }
}
Copy to Clipboard Toggle word wrap

接下来,使用 Camel 路由中的 bean。

重要

为确保记录的 span 序列正确,您必须使用 full to ("bean:") 端点 URI,而不是短的 .bean () EIP DSL 方法。

public class MyRoutes extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("direct:executeBean")
                .to("bean:myBean?method=greet");
    }
}
Copy to Clipboard Toggle word wrap

Quarkus OpenTelemetry 指南中的 CDI 检测的更多信息。

2.59.4. 其他 Camel Quarkus 配置

Expand
配置属性类型默认

lock quarkus.camel.opentelemetry.encoding

设置是否需要编码标头名称。如果 OpenTelemetry 传播程序可能会设置与目标系统不兼容的格式,则很有用。例如,用于 JMS,其中规格强制标头名称是有效的 Java 标识符。

布尔值

false

lock quarkus.camel.opentelemetry.exclude-patterns

设置是否禁用与给定模式匹配的端点 URI 的追踪。模式可以采用以下格式:

1.端点 URI 完全匹配。e.g platform-http:/some/path

2.通配符匹配。例如 platform-http:*

3.与端点 URI 匹配的正则表达式。例如 platform-http:/prefix/.*

字符串

 

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

2.60. paho

使用 Eclipse Paho MQTT 客户端与 mq 消息代理通信。

2.60.1. 内部是什么

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

2.60.2. Maven 协调

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

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

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

2.61. Paho MQTT5

使用 Eclipse Paho MQTT v5 客户端与 MQTT 消息代理进行通信。

2.61.1. 内部是什么

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

2.61.2. Maven 协调

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

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

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

2.62. 平台 HTTP

此扩展允许创建 HTTP 端点来消耗 HTTP 请求。

它基于由 quarkus-vertx-http 扩展提供的 Eclipse Vert.x HTTP 服务器。

2.62.1. 内部是什么

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

2.62.2. Maven 协调

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

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

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

2.62.3. 使用方法

2.62.3.1. 基本用法

/hello 端点上提供所有 HTTP 方法:

from("platform-http:/hello").setBody(simple("Hello ${header.name}"));
Copy to Clipboard Toggle word wrap

仅在 /hello 端点上服务 GET 请求:

from("platform-http:/hello?httpMethodRestrict=GET").setBody(simple("Hello ${header.name}"));
Copy to Clipboard Toggle word wrap
2.62.3.2. 通过 Camel REST DSL 使用 platform-http

要将 Camel REST DSL 与 platform-http 组件搭配使用,请将 camel-quarkus-rest 添加到 pom.xml 中:

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

然后,您可以使用 Camel REST DSL:

rest()
    .get("/my-get-endpoint")
        .to("direct:handleGetRequest");

    .post("/my-post-endpoint")
        .to("direct:handlePostRequest");
Copy to Clipboard Toggle word wrap
2.62.3.3. 处理 多部分/格式数据 文件上传

您可以通过列出它们来限制上传到某些文件扩展:

from("platform-http:/upload/multipart?fileNameExtWhitelist=html,txt&httpMethodRestrict=POST")
    .to("log:multipart")
    .process(e -> {
        final AttachmentMessage am = e.getMessage(AttachmentMessage.class);
        if (am.hasAttachments()) {
            am.getAttachments().forEach((fileName, dataHandler) -> {
                try (InputStream in = dataHandler.getInputStream()) {
                    // do something with the input stream
                } catch (IOException ioe) {
                    throw new RuntimeException(ioe);
                }
            });
        }
    });
Copy to Clipboard Toggle word wrap
2.62.3.4. 保护 platform-http 端点

Quarkus 提供了各种安全性和身份验证机制,可用于保护 platform-http 端点。如需更多详细信息,请参阅 Quarkus 安全文档

在路由中,可以获取经过身份验证的用户及其关联的安全Identity 主体

from("platform-http:/secure")
    .process(e -> {
        Message message = e.getMessage();
        QuarkusHttpUser user = message.getHeader(VertxPlatformHttpConstants.AUTHENTICATED_USER, QuarkusHttpUser.class);
        SecurityIdentity securityIdentity = user.getSecurityIdentity();
        Principal principal = securityIdentity.getPrincipal();
        // Do something useful with SecurityIdentity / Principal. E.g check user roles etc.
    });
Copy to Clipboard Toggle word wrap

另外,查看 Quarkus 文档, esp 中的 quarkus.http.body the 配置选项。quarkus.http.body.handle-file-uploads,quarkus.http.body.uploads-directoryquarkus.http.body.delete-uploaded-files-on-end.

2.62.3.5. 实现反向代理

平台 HTTP 组件可以充当反向代理,本例中为 Exchange.HTTP_URI,Exchange.HTTP_HOST 标头从 HTTP 请求请求行上接收的绝对 URL 填充。

以下是 HTTP 代理的示例,只需将交换重定向到原始服务器。

from("platform-http:proxy")
    .toD("http://"
        + "${headers." + Exchange.HTTP_HOST + "}");
Copy to Clipboard Toggle word wrap

2.62.4. 其他 Camel Quarkus 配置

2.62.4.1. 平台 HTTP 服务器配置

平台 HTTP 服务器配置由 Quarkus 管理。有关配置选项的完整列表,请参阅 Quarkus HTTP 配置指南

要为平台 HTTP 服务器配置 SSL,请遵循 与 SSL 指南的安全连接。请注意,目前不支持使用 SSLContextParameters 为 SSL 配置服务器。

2.62.4.2. 字符编码

如果您希望应用程序使用非默认编码发送或接收请求,请检查原生模式指南的 Character encodings 部分

2.63. quartz

使用 Quartz 2.x 调度程序调度消息发送。

2.63.1. 内部是什么

  • quartz 组件, URI 语法: quartz:groupName/triggerName

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

2.63.2. Maven 协调

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

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

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

2.63.3. 使用方法

2.63.3.1. 集群

对 Quartz 集群的支持由 Quarkus Quartz 扩展提供。以下步骤概述了如何配置 Quarkus Quartz 以用于 Camel。

  1. 启用 Quartz 集群模式,并将 DataSource 配置为持久性 Quartz 作业存储。示例配置如下:

    # Quartz configuration
    quarkus.quartz.clustered=true
    quarkus.quartz.store-type=jdbc-cmt
    quarkus.quartz.start-mode=forced
    
    # Datasource configuration
    quarkus.datasource.db-kind=postgresql
    quarkus.datasource.username=quarkus_test
    quarkus.datasource.password=quarkus_test
    quarkus.datasource.jdbc.url=jdbc:postgresql://localhost/quarkus_test
    
    # Optional automatic creation of Quartz tables
    quarkus.flyway.connect-retries=10
    quarkus.flyway.table=flyway_quarkus_history
    quarkus.flyway.migrate-at-start=true
    quarkus.flyway.baseline-on-migrate=true
    quarkus.flyway.baseline-version=1.0
    quarkus.flyway.baseline-description=Quartz
    Copy to Clipboard Toggle word wrap
  2. 向应用添加正确的 JDBC 驱动程序扩展,使其与 quarkus.datasource.db-kind 的值对应。在上例中使用了 postgresql,因此需要以下 JDBC 依赖项:根据您的需要进行调整。DataSource 支持还需要 agroal。

    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-jdbc-postgresql</artifactId>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-agroal</artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap
  3. Quarkus Flyway 可以自动为您创建必要的 Quartz 数据库表。将 quarkus-flyway 添加到应用程序(可选)。

    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-flyway</artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap

    另外,为您选择的数据库类型添加 Quartz 数据库创建脚本。Quartz 项目提供可从 这里 复制的脚本。将 SQL 脚本添加到 src/main/resources/db/migration/V1.0.0__QuarkusQuartz.sql。Quarkus Flyway 将在启动时检测它,并将继续创建 Quartz 数据库表。

  4. 将 Camel Quartz 组件配置为使用 Quarkus Quartz 调度程序。

    @Produces
    @Singleton
    @Named("quartz")
    public QuartzComponent quartzComponent(Scheduler scheduler) {
        QuartzComponent component = new QuartzComponent();
        component.setScheduler(scheduler);
        return component;
    }
    Copy to Clipboard Toggle word wrap

进一步自定义 Quartz 调度程序,可以通过各种配置属性来完成。如需更多信息,请参阅 Quarkus Quartz 配置指南

2.64. Ref

根据 Camel Registry 中的名称,将消息路由到端点动态查找。

2.64.1. 内部是什么

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

2.64.2. Maven 协调

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

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

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

2.64.3. 使用方法

CDI 生成者方法可被利用来将端点绑定到 Camel registry,以便使用 Camel 路由中的 ref URI 方案解析它们。

例如,生成端点 Bean:

@ApplicationScoped
public class MyEndpointProducers {
    @Inject
    CamelContext context;

    @Singleton
    @Produces
    @Named("endpoint1")
    public Endpoint directStart() {
        return context.getEndpoint("direct:start");
    }

    @Singleton
    @Produces
    @Named("endpoint2")
    public Endpoint logEnd() {
        return context.getEndpoint("log:end");
    }
}
Copy to Clipboard Toggle word wrap

使用 ref: 引用绑定到 Camel registry 的 CDI Bean 的名称:

public class MyRefRoutes extends RouteBuilder {
    @Override
    public void configure() {
        // direct:start -> log:end
        from("ref:endpoint1")
            .to("ref:endpoint2");
    }
}
Copy to Clipboard Toggle word wrap

2.65. rest

公开 REST 服务及其 OpenAPI 规格或调用外部 REST 服务。

2.65.1. 内部是什么

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

2.65.2. Maven 协调

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

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

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

2.65.3. 其他 Camel Quarkus 配置

此扩展取决于 平台 HTTP 扩展,并将其配置为提供 REST 传输的组件。

使用 platform-http REST 传输时,路径参数名称中不允许某些字符。这包括 '-' 和 '$' 字符。

要使以下示例 REST /dashed/param 路由正常工作,需要 io.vertx.web.route.param.extended-pattern=true

import org.apache.camel.builder.RouteBuilder;

public class CamelRoute extends RouteBuilder {

    @Override
    public void configure() {
        rest("/api")
            // Dash '-' is not allowed by default
            .get("/dashed/param/{my-param}")
            .to("direct:greet")

            // The non-dashed path parameter works by default
            .get("/undashed/param/{myParam}")
            .to("direct:greet");

            from("direct:greet")
                .setBody(constant("Hello World"));
    }
}
Copy to Clipboard Toggle word wrap

Vert.x Web 文档中,这个信息还有更多背景信息。

2.65.3.2. 配置备用 REST 传输供应商

要使用另一个 REST 传输提供程序,如 netty-httpservlet,您需要将对应的扩展添加为项目的依赖项,并在 RouteBuilder 中设置提供程序。例如,对于 servlet,您必须添加 org.apache.camel.quarkus:camel-quarkus-servlet 依赖项并设置供应商,如下所示:

import org.apache.camel.builder.RouteBuilder;

public class CamelRoute extends RouteBuilder {

    @Override
    public void configure() {
        restConfiguration()
                .component("servlet");
        ...
    }
}
Copy to Clipboard Toggle word wrap

2.66. REST OpenApi

根据 OpenAPI 规格文档配置 REST producer,委派到实施 RestProducerFactory 接口的组件。

2.66.1. 内部是什么

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

2.66.2. Maven 协调

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

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

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

2.66.3. 使用方法

2.66.3.1. 所需的依赖项

在使用 rest-openapi 扩展时,必须有一个 RestProducerFactory 实现。当前已知的扩展有:

  • camel-quarkus-http
  • camel-quarkus-netty-http

Maven 用户需要将其中一个依赖项添加到其 pom.xml 中,例如:

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

根据使用哪个机制来加载 OpenApi 规格,可能需要额外的依赖项。使用 文件 资源 locator 时,必须将 org.apache.camel.quarkus:camel-quarkus-file 扩展添加为项目依赖项。当使用 refbean 加载规格时,不仅必须添加 org.apache.camel.quarkus:camel-quarkus-bean 依赖项,而是必须使用 @RegisterForReflection 注解 bean 本身。

classpath 资源 locator 与原生代码搭配使用时,必须在 application.properties 文件的 quarkus.native.resources.includes 属性中指定 OpenAPI 规格的路径。例如:

quarkus.native.resources.includes=openapi.json
Copy to Clipboard Toggle word wrap

2.67. Salesforce

使用 Java DTO 与 Salesforce 通讯。

2.67.1. 内部是什么

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

2.67.2. Maven 协调

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

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

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

2.67.3. 使用方法

测试内容。

要为项目生成 Salesforce DTO,请使用 Salesforce -maven-plugin。以下的示例代码片段为 Account 帐户创建一个单一的 DTO。

<plugin>
    <groupId>org.apache.camel.maven</groupId>
    <artifactId>camel-salesforce-maven-plugin</artifactId>
    <version>3.18.6</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
            <configuration>
                <clientId>${env.SALESFORCE_CLIENTID}</clientId>
                <clientSecret>${env.SALESFORCE_CLIENTSECRET}</clientSecret>
                <userName>${env.SALESFORCE_USERNAME}</userName>
                <password>${env.SALESFORCE_PASSWORD}</password>
                <loginUrl>https://login.salesforce.com</loginUrl>
                <packageName>org.apache.camel.quarkus.component.salesforce.generated</packageName>
                <outputDirectory>src/main/java</outputDirectory>
                <includes>
                    <include>Account</include>
                </includes>
            </configuration>
        </execution>
    </executions>
</plugin>
Copy to Clipboard Toggle word wrap

2.67.4. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.68. XQuery

使用 XQuery 和 Saxon 查询和/或转换 XML 有效负载。

2.68.1. 内部是什么

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

2.68.2. Maven 协调

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

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

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

2.68.3. 其他 Camel Quarkus 配置

此组件可以从 classpath 加载 XQuery 定义。要使它也以原生模式工作,您需要使用 quarkus.native.resources.includes 属性在原生可执行文件中明确嵌入查询。

例如,以下两个路由分别从名为 myxquery.txtanother-xquery.txt 的两个 classpath 资源加载 XQuery 脚本:

from("direct:start").transform().xquery("resource:classpath:myxquery.txt", String.class);
from("direct:start").to("xquery:another-xquery.txt");
Copy to Clipboard Toggle word wrap

要在原生镜像中包含这些(可能存储在 .txt 文件中的其他查询),您必须将类似如下的内容添加到 application.properties 文件中:

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

2.69. scheduler

使用 java.util.concurrent.ScheduledExecutorService 以指定间隔生成消息。

2.69.1. 内部是什么

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

2.69.2. Maven 协调

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

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

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

2.70. SEDA

在同一 JVM 中异步调用任何 Camel 上下文的另一个端点。

2.70.1. 内部是什么

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

2.70.2. Maven 协调

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

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

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

2.71. Slack

向/从 Slack 发送和接收消息。

2.71.1. 内部是什么

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

2.71.2. Maven 协调

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

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

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

2.71.3. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.72. SOAP 数据格式

marshal Java 对象到 SOAP 消息,并返回。

2.72.1. 内部是什么

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

2.72.2. Maven 协调

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

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

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

2.73. SNMP

接收陷阱和轮询 SNMP (简单网络管理协议)功能的设备。

2.73.1. 内部是什么

URI 语法: snmp:host:port

有关使用和配置详情,请参阅 SNMP 组件

2.73.2. Maven 协调

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

2.73.3. Camel Quarkus 限制

此扩展使用 org.snmp4j:snmp4j 作为 SNMP 协议实现。这与使用 org.apache.servicemix.bundles.snmp4j:org.apache.servicemix.bundles 的 Camel 3.18.x 不同。

这个变化的动机是两倍:

  1. org.snmp4j:snmp4j 增加了更高的稳定性和修复许多漏洞。
  2. Camel 在版本 4 中切换到 org.snmp4j.snmp4j,因此 Camel Quarkus 用户可以在之前获得同样的好处。

这个更改不会影响 SNMP 组件的配置。

2.73.3.1. SNMP v3 限制

SNMP 版本 3 仅支持操作 轮询。(此限制是由 Camel 3.18.6 中的问题导致的。如需更多信息,请参阅 CAMEL-19298

2.74. SQL

执行 SQL 查询。

2.74.1. 内部是什么

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

2.74.2. Maven 协调

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

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

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

2.74.3. 其他 Camel Quarkus 配置

2.74.3.1. 配置数据源

此扩展利用 Quarkus Agroal 用于 DataSource 支持。可以通过 配置属性 实现数据源。

quarkus.datasource.db-kind=postgresql
quarkus.datasource.username=your-username
quarkus.datasource.password=your-password
quarkus.datasource.jdbc.url=jdbc:postgresql://localhost:5432/your-database
quarkus.datasource.jdbc.max-size=16
Copy to Clipboard Toggle word wrap

Camel SQL 组件将自动从 registry 解析 DataSource bean。在配置多个数据源时,您可以通过 URI 选项 数据源dataSourceRef 指定在 SQL 端点上使用哪些数据。如需了解更多详细信息,请参阅 SQL 组件文档。

2.74.3.1.1. 使用 Quarkus Dev 服务进行零配置

在 dev 和 test 模式中,您可以利用 配置空闲数据库。Camel SQL 组件将自动配置为使用 数据源,该数据源指向与您选择的 JDBC 驱动程序类型匹配的数据库的本地容器化实例。

2.74.3.2. SQL 脚本

当将 sqlsql-stored 端点配置为引用 classpath 中的脚本文件时,请设置以下配置属性,以确保它们以原生模式可用。

quarkus.native.resources.includes = queries.sql, sql/*.sql
Copy to Clipboard Toggle word wrap
2.74.3.3. 原生模式的 SQL 聚合存储库

要在原生模式中使用类似 JdbcAggregationRepository 的 SQL 聚合存储库,您必须启用原生序列化支持

此外,如果您的交换正文是自定义类型,则必须通过使用 @RegisterForReflection (serialization = true) 注解其类声明来进行序列化。

2.75. 电话报

发送并接收作为站报 Bot 报 Bot API 的消息。

2.75.1. 内部是什么

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

2.75.2. Maven 协调

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

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

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

2.75.3. 使用方法

2.75.4. Webhook 模式

Tailoringgram 扩展支持在 Webhook 模式中使用。

要启用 Webhook 模式,用户首先需要在其应用程序中添加 REST 实现。例如,Maven 用户可以将 camel-quarkus-rest 扩展添加到其 pom.xml 文件中:

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

2.75.5. SSL 处于原生模式

此扩展会在原生模式下自动启用 SSL 支持。因此,您不需要自行将 quarkus.ssl.native=true 添加到 application.properties。另请参阅 Quarkus SSL 指南

2.76. timer

使用 java.util.Timer 以指定间隔生成消息。

2.76.1. 内部是什么

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

2.76.2. Maven 协调

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

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

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

2.77. Vert.x HTTP 客户端

使用 Vert.x Camel HTTP 客户端支持

2.77.1. 内部是什么

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

2.77.2. Maven 协调

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

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

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

2.77.3. 原生模式中的 transferException 选项

要在原生模式中使用 transferException 选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南

您还需要为您要序列化的异常类启用序列化。例如:

@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
Copy to Clipboard Toggle word wrap

2.77.4. 其他 Camel Quarkus 配置

2.77.5. 在原生模式中允许JavaSerializedObject 选项

当在原生模式中使用 allowJavaSerializedObject 选项时,可能需要启用对序列化的支持。如需更多信息,请参阅 原生模式用户指南

2.77.5.1. 字符编码

如果应用程序需要使用非默认编码来发送和接收请求,请检查 Native 模式指南的 Character encodings 部分

2.78. 验证器

使用 XML 架构和 JAXP 验证来验证有效负载。

2.78.1. 内部是什么

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

2.78.2. Maven 协调

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

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

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

2.79. Velocity

使用 kiosky 模板转换消息。

2.79.1. 内部是什么

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

2.79.2. Maven 协调

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

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

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

2.79.3. 使用方法

2.79.3.1. 自定义正文作为原生模式的域对象

当使用自定义对象作为消息正文并在原生模式中引用其属性时,需要注册所有类以进行反映( 请参阅文档)。

例如:

@RegisterForReflection
public interface CustomBody {
}
Copy to Clipboard Toggle word wrap

2.79.4. 原生模式中的 allowContextMapAll 选项

原生模式下不支持 allowContextMapAll 选项,因为它需要对安全敏感 camel 内核类(如 CamelContextExchange )进行反映访问。这被视为安全风险,因此默认不提供对该功能的访问。

2.79.5. 其他 Camel Quarkus 配置

这个组件通常从 classpath 加载 Velocity 模板。要使它也以原生模式工作,您需要使用 quarkus.native.resources.includes 属性将模板明确嵌入到原生可执行文件中。

例如,以下路由会从名为 template/simple.vm 的类路径资源中加载 sVirty 模板:

from("direct:start").to("velocity://template/simple.vm");
Copy to Clipboard Toggle word wrap

要在原生镜像中包含它(可能存储在 模板 目录中的 .vm 文件中的其他模板),您必须将类似如下的内容添加到 application.properties 文件中:

quarkus.native.resources.includes = template/*.vm
Copy to Clipboard Toggle word wrap

2.80. XML IO DSL

用于解析 XML 路由定义的 XML 堆栈

2.80.1. 内部是什么

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

2.80.2. Maven 协调

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

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

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

2.80.3. 其他 Camel Quarkus 配置

2.80.3.1. XML 文件编码

默认情况下,一些 XML 文件编码可能无法以原生模式开箱即用。请选中 Character encodings 部分以了解 如何修复。

2.81. XPath

根据 XML 有效负载评估 XPath 表达式

2.81.1. 内部是什么

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

2.81.2. Maven 协调

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

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

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

2.81.3. 其他 Camel Quarkus 配置

这个组件可以从 classpath 资源加载 xpath 表达式。要使它也以原生模式工作,您需要使用 quarkus.native.resources.includes 属性将表达式文件明确嵌入到原生可执行文件中。

例如,以下示例会从名为 myxpath.txt 的 classpath 资源加载 XPath 表达式:

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

要在原生镜像中包含它(可能存储在 .txt 文件中的其他表达式),您必须将类似如下的内容添加到 application.properties 文件中:

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

2.82. XSLT

使用 XSLT 模板转换 XML 有效负载。

2.82.1. 内部是什么

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

2.82.2. Maven 协调

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

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

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

2.82.3. 其他 Camel Quarkus 配置

要优化 XSLT 处理,扩展需要在构建时知道 XSLT 模板的位置。XSLT 源 URI 必须通过 quarkus.camel.xslt.sources 属性传递。可以使用逗号分隔多个 URI。

quarkus.camel.xslt.sources = transform.xsl, classpath:path/to/my/file.xsl
Copy to Clipboard Toggle word wrap

无方案 URI 将解释为 classpath: URI。

只支持 classpath : 在 Quarkus 原生模式下支持 URI。文件: http: 和其他类型的 URI 只能用于 JVM 模式。

现在,只有 JVM 模式支持 XSLT 元素 {clu}{ssagi}

如果使用 聚合 DSL,则必须使用 XsltSaxonAggregationStrategy,例如

from("file:src/test/resources?noop=true&sortBy=file:name&antInclude=*.xml")
   .routeId("aggregate").noAutoStartup()
   .aggregate(new XsltSaxonAggregationStrategy("xslt/aggregate.xsl"))
   .constant(true)
   .completionFromBatchConsumer()
   .log("after aggregate body: ${body}")
   .to("mock:transformed");
Copy to Clipboard Toggle word wrap

另外,它只在 JVM 模式中被支持。

2.82.3.1. 配置

可使用以下属性配置 TransformerFactory 功能:

quarkus.camel.xslt.features."http\://javax.xml.XMLConstants/feature/secure-processing"=false
Copy to Clipboard Toggle word wrap
2.82.3.2. 扩展功能支持

xalan 的扩展功能仅在满足以下条件时正常工作

  1. 禁用安全处理
  2. 函数在单独的 jar 中定义
  3. 函数在原生构建阶段增强。例如,可以注册它们以进行反映:
@RegisterForReflection(targets = { my.Functions.class })
public class FunctionsConfiguration {
}
Copy to Clipboard Toggle word wrap
注意

XSLT 源 URI 的内容在构建时被解析并编译到 Java 类中。这些 Java 类是运行时 XSLT 信息的唯一来源。XSLT 源文件根本不包含在应用程序存档中。

Expand
配置属性类型默认

lock quarkus.camel.xslt.sources

要编译的模板的逗号分隔列表。

字符串

 

lock quarkus.camel.xslt.package-name

生成的类的软件包名称。

字符串

org.apache.camel.quarkus.component.xslt.generated

lock quarkus.camel.xslt.features

TransformerFactory 功能。

Map<String,Boolean>

 

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

2.83. YAML DSL

用于解析 YAML 路由定义的 YAML 堆栈

2.83.1. 内部是什么

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

2.83.2. Maven 协调

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

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

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

2.83.3. 使用方法

2.83.3.1. 原生模式

在 Camel YAML DSL 标记中定义时,需要您注册类以进行反映。详情请参考 原生模式 指南。

2.83.3.1.1. Bean 定义

YAML DSL 提供了定义 Bean 的功能,如下所示:

- beans:
    - name: "greetingBean"
      type: "org.acme.GreetingBean"
      properties:
        greeting: "Hello World!"
- route:
    id: "my-yaml-route"
    from:
      uri: "timer:from-yaml?period=1000"
      steps:
        - to: "bean:greetingBean"
Copy to Clipboard Toggle word wrap

在本例中,需要注册 GreetingBean 类以进行反映。这适用于您在 YAML 路由中的 Bean 键下引用的任何类型。

@RegisterForReflection
public class GreetingBean {
}
Copy to Clipboard Toggle word wrap
2.83.3.1.2. 异常处理

Camel 提供了各种处理异常的方法。其中一些要求注册 DSL 定义中引用的任何异常类以进行反映。

on-exception

- on-exception:
    handled:
      constant: "true"
    exception:
      - "org.acme.MyHandledException"
    steps:
      - transform:
          constant: "Sorry something went wrong"
Copy to Clipboard Toggle word wrap
@RegisterForReflection
public class MyHandledException {
}
Copy to Clipboard Toggle word wrap

throw-exception

- route:
    id: "my-yaml-route"
    from:
      uri: "direct:start"
      steps:
        - choice:
            when:
              - simple: "${body} == 'bad value'"
                steps:
                  - throw-exception:
                      exception-type: "org.acme.ForcedException"
                      message: "Forced exception"
            otherwise:
              steps:
                - to: "log:end"
Copy to Clipboard Toggle word wrap
@RegisterForReflection
public class ForcedException {
}
Copy to Clipboard Toggle word wrap

do-catch

- route:
    id: "my-yaml-route2"
    from:
      uri: "direct:tryCatch"
      steps:
        - do-try:
            steps:
              - to: "direct:readFile"
            do-catch:
              - exception:
                  - "java.io.FileNotFoundException"
                steps:
                  - transform:
                      constant: "do-catch caught an exception"
Copy to Clipboard Toggle word wrap
@RegisterForReflection(targets = FileNotFoundException.class)
public class MyClass {
}
Copy to Clipboard Toggle word wrap

2.84. zip 文件

使用 java.util.zip.ZipStream 压缩和解压缩流。

2.84.1. 内部是什么

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

2.84.2. Maven 协调

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

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

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

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat