Quarkus 参考的 Camel 扩展


Red Hat Integration 2022.Q3

由红帽提供的 Quarkus 的 Camel 扩展

摘要

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

前言

使开源包含更多

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

第 1 章 扩展概述

1.1. 支持级别定义

在包括 Camel Extensions for Quarkus 之前,新功能、服务和组件将经历多个支持级别,因为生产用完全支持。这是为了确保提供我们产品期望的企业稳定性与需要之间的正确平衡,允许我们的客户和合作伙伴使用新的 Camel 扩展来试验 Quarkus 技术的新 Camel 扩展并提供反馈,以帮助指导未来的开发活动。

Expand
表 1.1. Quarkus 支持级别的 Camel 扩展
类型描述

社区支持

作为红帽对上游社区的承诺,首先将新扩展集成到我们的 Camel 扩展中,从上游社区开始。虽然这些扩展已经经过了上游测试和记录,但我们并没有审核这些扩展的成熟度,且在以后的产品版本中,红帽可能不会正式支持。

注意

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

技术预览

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

产品支持

产品支持扩展以正式的红帽版本提供,并被完全支持。在所有支持的配置中都没有测试文档空白和扩展。

1.2. 支持的扩展

有 48 个扩展。

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

Attachments

camel-quarkus-attachments

产品支持

产品支持

支持 Camel 消息上的附件。

AWS 2 DynamoDB

camel-quarkus-aws2-ddb

产品支持

产品支持

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

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 Topic。

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 验证消息正文。

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、easy 和 Tokeinze

cron

camel-quarkus-cron

产品支持

产品支持

通过 Unix cron 语法指定事件的通用接口。

direct

camel-quarkus-direct

产品支持

产品支持

从同一 Camel 上下文同时调用另一个端点。

FHIR

camel-quarkus-fhir

产品支持

产品支持

使用 FHIR(Fast healthcare 互操作性资源)标准交换医疗域中的信息。

File

camel-quarkus-file

产品支持

产品支持

读写文件.

FTP

camel-quarkus-ftp

产品支持

产品支持

将文件上传并下载到 FTP 或 SFTP 服务器中。

HTTP

camel-quarkus-http

产品支持

产品支持

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

Infinispan

camel-quarkus-infinispan

技术预览

技术预览

从/到 Infinispan 分布式密钥/值存储和数据网格读取和写入。

Jira

camel-quarkus-jira

产品支持

产品支持

与 JIRA 的问题跟踪器交互。

JMS

camel-quarkus-jms

产品支持

产品支持

从 JMS Queue 或 Topic 发送/接收消息。

JTA

camel-quarkus-jta

产品支持

产品支持

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

Kafka

camel-quarkus-kafka

产品支持

产品支持

从 Apache Kafka 代理发送和接收信息。

Kamelet

camel-quarkus-kamelet

产品支持

产品支持

Kamelet 组件提供对与 Camel Route 模板引擎交互的支持。

Log

camel-quarkus-log

产品支持

产品支持

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

mail

camel-quarkus-mail

产品支持

产品支持

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

MicroProfile 容错

camel-quarkus-microprofile-fault-tolerance

产品支持

产品支持

使用 MicroProfile 容错的断路器 EIP.

MicroProfile Health

camel-quarkus-microprofile-health

产品支持

产品支持

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

MicroProfile Metrics

camel-quarkus-microprofile-metrics

产品支持

产品支持

从 Camel 路由公开指标。

MLLP

camel-quarkus-mllp

产品支持

产品支持

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

模拟

camel-quarkus-mock

产品支持

产品支持

使用模拟测试路由和调解规则。

MongoDB

camel-quarkus-mongodb

技术预览

技术预览

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

Netty

Camel-quarkus-netty

产品支持

产品支持

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

OpenAPI Java

camel-quarkus-openapi-java

产品支持

产品支持

使用 OpenAPI doc 的 REST-dsl 支持

Paho

camel-quarkus-paho

产品支持

产品支持

使用 Eclipse Paho [...] 客户端与 advertise 错误消息代理通信。

Paho paper 5

camel-quarkus-paho-mqtt5

产品支持

产品支持

使用 Eclipse Paho [...] v5 客户端与 advertise 错误消息代理通信。

平台 HTTP

camel-quarkus-platform-http

产品支持

产品支持

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

Quartz

camel-quarkus-quartz

产品支持

产品支持

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

REST

camel-quarkus-rest

产品支持

产品支持

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

Salesforce

camel-quarkus-salesforce

产品支持

产品支持

使用 Java DTO 与 Salesforce 沟通。

SEDA

camel-quarkus-seda

产品支持

产品支持

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

Slack

camel-quarkus-slack

技术预览

技术预览

从 Slack 发送和接收消息。

SQL

camel-quarkus-sql

产品支持

产品支持

使用 Spring JDBC 执行 SQL 查询。

Telegram

camel-quarkus-telegram

技术预览

技术预览

发送和接收充当 Telegram Bot API 的消息。

timer

camel-quarkus-timer

产品支持

产品支持

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

XQuery

camel-quarkus-saxon

产品支持

产品支持

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

zip 文件

camel-quarkus-zipfile

产品支持

产品支持

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

1.3. 支持的数据格式

有 9 个数据格式。

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

Avro

camel-quarkus-avro

产品支持

产品支持

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

Avro Jackson

camel-quarkus-jackson-avro

产品支持

产品支持

marshal CURRENTs to Avro and back using Jackson.

Bindy

camel-quarkus-bindy

产品支持

产品支持

gimps 和 Comma separated values(CSV)格式使用 Camel Bindy Marshal 和 unmarshal 之间的 marshal 和 unmarshal 和 unmarshal(使用 Camel Bindy Marshal 和 unmarshal)格式使用 Camel Bindy Marshal 和 unmarshal(KVP)格式

HL7

camel-quarkus-hl7

产品支持

产品支持

marshal 和 unmarshal HL7(Health Care)使用 HL7 MLLP codec 模拟对象。

Jackson

camel-quarkus-jackson

产品支持

产品支持

marshal CURRENTs to JSON 并使用 Jackson

JacksonXML

camel-quarkus-jacksonxml

产品支持

产品支持

解包 XML 载荷,以使用 Jackson 的 XMLMapper 扩展来回放。

JSON Gson

camel-quarkus-gson

产品支持

产品支持

marshal CURRENTs to JSON 并使用 Gson。

protobuf Jackson

camel-quarkus-jackson-protobuf

产品支持

产品支持

marshal POJOs to Protobuf and back using Jackson.

SOAP 数据格式

camel-quarkus-soap

产品支持

产品支持

结合 Java 对象到 SOAP 消息和后。

1.4. 支持的语言

有 12 种语言。

Expand
表 1.4. Quarkus 支持的 Camel 扩展列表
扩展工件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

产品支持

产品支持

获取名为 Camel Message 标头的值。

HL7 Terser

camel-quarkus-hl7

产品支持

产品支持

marshal 和 unmarshal HL7(Health Care)使用 HL7 MLLP codec 模拟对象。

JSON 路径

camel-quarkus-jsonpath

产品支持

产品支持

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

Ref

camel-quarkus-core

产品支持

产品支持

在 Camel 注册表中查找表达式并评估它。

Simple(简单)

camel-quarkus-core

产品支持

产品支持

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

令牌化

camel-quarkus-core

产品支持

产品支持

使用指定的分隔符,对文本有效负载进行令牌化。

XPath

camel-quarkus-xpath

产品支持

产品支持

针对 XML 有效负载评估 XPath 表达式。

XQuery

camel-quarkus-saxon

产品支持

产品支持

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

第 2 章 扩展参考

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

2.1. Attachments

支持 Camel 消息上的附件

2.1.1. 内部

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

2.1.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.2. Avro

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

2.2.1. 内部

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

2.2.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.2.3. 其他 Camel Quarkus 配置

除了 vanilla Camel 已知的标准使用之外,Camel Quarkus 增加了在 JVM 和原生模式下构建时解析 Avro 模式的可能性。

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

  1. *.avsc 文件存储在名为 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 集成测试Quarkus Avro 集成测试

2.3. Avro Jackson

marshal CURRENTs to Avro and back using Jackson.

2.3.1. 内部

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

2.3.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.4. AWS 2 DynamoDB

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

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 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 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. DynamoDbClientQuarkus CDI 引用 中必须"完全删除",以便 Camel Quarkus 能够在运行时查看它。例如,您可以通过添加 dummy bean injecting 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 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 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. Camel Quarkus 限制

getAliaslistAliases 操作需要与 pojoRequest 一起使用,才能正常工作。这意味着,这些操作的请求应该根据下方所示手动进行显式构建。

手动创建 getAlias 请求的示例:

.process(new Processor() {
   public void process(Exchange exchange) {
    GetAliasRequest getAliasRequest = GetAliasRequest.builder().functionName(functionName).name(aliasName).build();
    exchange.getIn().setBody(getAliasRequest);
  }})
.to("aws2-lambda:functionName?operation=getAlias&pojoRequest=true");
Copy to Clipboard Toggle word wrap

手动创建 listAliases 请求的示例:

.process(new Processor() {
   public void process(Exchange exchange) {
    ListAliasesRequest listAliasesRequest = ListAliasesRequest.builder().functionName(functionName).build();
    exchange.getIn().setBody(listAliasesRequest);
  }})
.to("aws2-lambda:functionName?operation=listAliases&pojoRequest=true");
Copy to Clipboard Toggle word wrap

2.6.4. 原生模式的 SSL

这个扩展可自动启用原生模式的 SSL 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 Quarkus SSL 指南

2.6.5. 其他 Camel Quarkus 配置

quarkus-amazon-lambda 扩展允许您使用 Quarkus 构建您的 AWS Lambdas,而 Camel 组件则管理(deploy、chint 和 …)现有功能。因此,无法使用 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 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 Quarkus SSL 指南

2.7.4. 其他 Camel Quarkus 配置

2.7.4.1. 与 Quarkus Amazon S3 的可选集成

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

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

    quarkus.s3.sync-client.type=apache
    Copy to Clipboard Toggle word wrap
  2. Quarkus CDI 引用 中,S3Client 必须"无法删除",以便 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
注意

如果您使用 camel-quarkus-aws2-s3 扩展来创建包含浏览器兼容性的下载链接,您必须禁用 checksum 验证,以避免使用 HTTP GET 请求时出现 HTTP 403 Forbidden 错误:

quarkus.s3.checksum-validation=false
Copy to Clipboard Toggle word wrap

2.8. AWS 2 Simple Notification System(SNS)

使用 AWS SDK 版本 2.x 将消息发送到 AWS Simple Notification Topic。

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 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 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. Quarkus CDI 引用 中,SnsClient 必须"无法删除",以便 Camel Quarkus 能够在运行时查看它。您可以通过添加 dummy bean inject 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 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 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. Quarkus CDI 引用 中,必须通过 SqsClient 进行"不可删除",以便 Camel Quarkus 能够在运行时查看它。您可以通过添加 dummy bean inject 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 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 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 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 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. 配置有效因素因素

此扩展实施利用 Quarkus Hibernate 验证器扩展

因此,无法配置 Camel 属性(constraint ValidatorFactory messageInterpolatortraversableResolver验证ProviderResolvervalidator factory )的有效期

您可以通过创建 beanancoy 来配置 Validator onnectionFactoryy,它将注入到默认的 ValidatoronnectionFactoryy (由 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 注册表中提供的 Bean 方法外,Bean 组件和 Bean 方法语言也可以调用 Quarkus CDI Bean。

2.14. Bindy

在一个侧和 Comma separated values(CSV)上的 marshal 和 unmarshal 和 unmarshal 和 unmarshal 和 unmarshal,使用 Camel Bindy 在其它边显示字段长度或键值对(KVP)格式

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. Cassandra CQL

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

2.15.1. 内部

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

2.15.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.15.3. 其他 Camel Quarkus 配置

2.15.3.1. 以原生模式进行 Cassandra 聚合存储库

为了以原生模式使用 CassandraAggregationRepository 等 Cassandra 聚合存储库,您必须启用原生序列化支持

另外,如果您的交换器是自定义类型,则必须通过向 @RegisterForReflection(serialization = true) 标注类声明来序列化它们。

2.16. Core

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

2.16.1. 内部

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

2.16.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.16.3. 其他 Camel Quarkus 配置

2.16.3.1. 简单语言
2.16.3.1.1. 使用 OGNL 表示法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Expand
配置属性类型默认

lock quarkus.camel.bootstrap.enabled

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

布尔值

true

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

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

字符串

 

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

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

字符串

 

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

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

字符串

 

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

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

字符串

 

lock quarkus.camel.runtime-catalog.components

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

布尔值

true

lock quarkus.camel.runtime-catalog.languages

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

布尔值

true

lock quarkus.camel.runtime-catalog.dataformats

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

布尔值

true

lock quarkus.camel.runtime-catalog-models

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

布尔值

true

lock quarkus.camel.routes-discovery.enabled

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

布尔值

true

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

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

字符串

 

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

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

字符串

 

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

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

字符串

 

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

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

字符串

 

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

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

字符串

 

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

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

字符串

 

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

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

布尔值

false

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

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

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

warn

lock quarkus.camel.event-bridge.enabled

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

布尔值

true

lock quarkus.camel.main.shutdown.timeout

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

java.time.Duration

PT3S

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

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

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

warn

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

2.17. cron

通过 Unix cron 语法指定事件的通用接口。

2.17.1. 内部

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

2.17.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.17.3. 其他 Camel Quarkus 配置

cron 组件是一个通用接口组件,如 Camel Quarkus 用户需要使用 cron 扩展以及另一个扩展来提供实施。

例如,一个可以在其项目中使用 Quartz Extension 和 cron 扩展。

2.18. direct

从同一 Camel 上下文同时调用另一个端点。

2.18.1. 内部

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

2.18.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.19. FHIR

使用 FHIR(Fast healthcare 互操作性资源)标准交换医疗域中的信息。Marshall 和 unmarshall FHIR 对象到/来自 JSON。Marshall 和 unmarshall FHIR 对象到/来自 XML。

2.19.1. 内部

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

2.19.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.19.3. 原生模式的 SSL

这个扩展可自动启用原生模式的 SSL 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 Quarkus SSL 指南

2.19.4. 其他 Camel Quarkus 配置

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

Expand
配置属性类型默认

lock quarkus.camel.fhir.enable-dstu2

在原生模式中启用 FHIR DSTU2 Spec。

布尔值

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 Spec。

布尔值

true

lock quarkus.camel.fhir.enable-r4

在原生模式中启用 FHIR R4 Spec。

布尔值

true

lock quarkus.camel.fhir.enable-r5

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

布尔值

false

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

2.20. File

读写文件.

2.20.1. 内部

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

2.20.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.21. FTP

将文件上传并下载到 SFTP、FTP 或 SFTP 服务器中

2.21.1. 内部

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

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

2.21.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.22. Gson

marshal CURRENTs to JSON 并使用 Gson

2.22.1. 内部

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

2.22.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.22.3. 其他 Camel Quarkus 配置

2.22.3.1. 以原生模式划分/解放对象

当以原生模式进行 marshaing/unmarshaling 对象时,需要注册所有序列化的类才能 反映。因此,在使用 GsonDataFormat.setUnmarshalType(…​) 时,GsonDataFormat.setUnmarshalTypeName(…​)GsonDataFormat.setUnmarshalGenericType(…​),应该注册 unmarshal type 和 sub 字段类型。查看此 集成测试 中的工作示例。

2.23. HL7

marshal 和 unmarshal HL7(Health Care)使用 HL7 MLLP codec 模拟对象。

2.23.1. 内部

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

2.23.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.23.3. Camel Quarkus 限制

对于带有 TCP 的 MLLP,Netty 是运行 Hl7 MLLP 侦听器的唯一方法。Mina 不支持,因为它目前没有 GraalVM 原生支持。

通过添加 pom.xml 中的依赖关系到 camel-quarkus-net ty,对 HL7MLLPMLLPNetLLPNettyDecoderFactory codecs 的可选支持。

2.24. HTTP

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

2.24.1. 内部

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

2.24.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.24.3. 原生模式的 SSL

这个扩展可自动启用原生模式的 SSL 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 Quarkus SSL 指南

2.24.4. 在原生模式中传输Exception 选项

要在原生模式中使用 transferException 选项,您必须启用对对象序列化的支持。如需更多信息,请参阅《 使用 Camel 扩展 器开发应用》中的"注册类 "一节。

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

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

2.24.5. 其他 Camel Quarkus 配置

your application to send or receive requests using non-default encodings.
Copy to Clipboard Toggle word wrap

2.25. Infinispan

从/到 Infinispan 分布式密钥/值存储和数据网格读取和写入。

2.25.1. 内部

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

2.25.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.25.3. Camel Quarkus 限制

2.25.3.1. 不支持 emacsRemoteAggregationRepository

在呈现 InfinispanRemoteAggregationRepository 时不受支持。有一些计划 在以后 可以进行改进。

2.25.4. 其他 Camel Quarkus 配置

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

2.26. Jackson

marshal CURRENTs to JSON 并使用 Jackson

2.26.1. 内部

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

2.26.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.27. JacksonXML

解包 XML 载荷,以使用 Jackson 的 XMLMapper 扩展来回放。

2.27.1. 内部

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

2.27.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.28. Jira

与 JIRA 的问题跟踪器交互。

2.28.1. 内部

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

2.28.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
注意

使用 camel-quarkus-jira 扩展的应用程序需要在 Maven settings.xml 文件中或在应用程序项目的 pom.xml 文件中配置额外的 Maven 存储库 https://packages.atlassian.com/maven-external/

2.28.3. 原生模式的 SSL

这个扩展可自动启用原生模式的 SSL 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 Quarkus SSL 指南

2.29. JMS

将消息发送到 JMS Queue 或 Topic。

2.29.1. 内部

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

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

2.29.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.29.3. 使用方法

2.29.3.1. 使用 org.w3c.dom.Node进行消息映射

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

2.29.3.2. javax.jms.ObjectMessage 的原生模式支持

将 JMS 消息有效负载发送为 javax.jms.ObjectMessage 时,您必须注解相关的类,以便采用 @RegisterForReflection(serialization = true) 进行序列化注册。请注意,这个扩展会自动为您设置 quarkus.camel.native.reflection.serialization-enabled = true

如需更多信息,请参阅《 使用 Camel 扩展 器开发应用》中的"注册类 "一节。

2.29.4. 在原生模式中传输Exception 选项

要在原生模式中使用 transferException 选项,您必须启用对对象序列化的支持。如需更多信息,请参阅《 使用 Camel 扩展 器开发应用》中的"注册类 "一节。

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

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

2.30. JSON 路径

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

2.30.1. 内部

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

2.30.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.31. JTA

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

2.31.1. 内部

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

2.31.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.31.3. 使用方法

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

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

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.32. Kafka

从 Apache Kafka 代理发送和接收信息。

2.32.1. 内部

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

2.32.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.32.3. 使用方法

2.32.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.32.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.33. Kamelet

对路由模板进行材料化

2.33.1. 内部

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

2.33.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.33.3. 使用方法

2.33.3.1. 在构建时预加载 Kamelets

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

2.33.3.2. 使用 Kamelet Catalog

在 /camel-kamelets/latest[Kamelet Catalog] 上提供了一组预先可用的 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 都应该被预加载。

2.33.4. 其他 Camel Quarkus 配置

Expand
配置属性类型默认

lock quarkus.camel.kamelet.identifiers

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

字符串

 

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

2.34. Log

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

2.34.1. 内部

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

2.34.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.35. mail

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

2.35.1. 内部

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

2.35.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.36. MicroProfile 容错

使用 Microprofile Fault Tolerance 的断路器 EIP

2.36.1. 内部

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

2.36.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.37. MicroProfile Health

通过 MicroProfile 健康状况公开 Camel 健康检查

2.37.1. 内部

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

2.37.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.37.3. 使用方法

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

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

您还可以提供自定义的 HealthCheckRepository 实施,它们也会自动发现和绑定到 Camel 注册表。

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

2.37.3.1. 提供健康检查

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

2.37.3.1.1. Camel 上下文健康状态

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

2.37.3.1.2. Camel 路由健康

检查每个路由的状态,如果任何路由状态不是"Started",则会导致健康检查状态为 DOWN

2.37.4. 其他 Camel Quarkus 配置

Expand
配置属性类型默认

lock quarkus.camel.health.enabled

设置是否启用 Camel 健康检查

布尔值

true

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

2.38. MicroProfile Metrics

从 Camel 路由公开指标。

2.38.1. 内部

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

2.38.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.38.3. 使用方法

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

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

camel.context.status

ServiceStatus enum ordinal 代表 Camel 上下文的状态

量表

camel.context.uptime

Camel 上下文运行时间(以毫秒为单位)

量表

camel.context.exchanges.completed.total

完成的交换总数

计数

camel.context.exchanges.failed.total

失败交换的总数

计数

camel.context.exchanges.inflight.total

动态交换的总数

量表

camel.context.exchanges.total

所有交换的总数

计数

camel.context.externalRedeliveries.total

所有外部红色的总数

计数

camel.context.failuresHandled.total

所有处理失败的总数量

计数

2.38.3.2. Camel 路由指标
Expand
指标名称类型

camel.route.count

路由数量

量表

camel.route.running.count

运行的路由数量

量表

camel.route.exchanges.completed.total

路由完成交换的总数

计数

camel.route.exchanges.failed.total

路由失败的交换总数

计数

camel.route.exchanges.inflight.total

路由中动态交换的总数

量表

camel.route.exchanges.total

路由的所有交换总数

计数

camel.route.externalRedeliveries.total

路由的所有外部红色结构的总数

计数

camel.route.failuresHandled.total

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

计数

所有指标都带有 Camel Context 的名称以及适用路由的 id。

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

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

2.38.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

为捕获 CamelContext 指标(如状态和运行时间)设置是否启用 MicroProfileMetricsCamelContextEventNotifier。

布尔值

true

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

2.39. MLLP

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

2.39.1. 内部

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

2.39.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.39.3. 其他 Camel Quarkus 配置

2.40. 模拟

使用模拟测试路由和调解规则。

2.40.1. 内部

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

2.40.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.40.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.40.4. Camel Quarkus 限制

CDI Bean 注入(在使用量中)不能以原生模式工作。

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

2.41. MongoDB

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

2.41.1. 内部

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

2.41.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.41.3. 其他 Camel Quarkus 配置

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

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

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.42. Netty

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

2.42.1. 内部

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

2.42.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.43. OpenAPI Java

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

2.43.1. 内部

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

2.43.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.43.3. Camel Quarkus 限制

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

2.44. Paho

使用 Eclipse Paho [...] 客户端与 advertise 错误消息代理通信。

2.44.1. 内部

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

2.44.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.45. Paho awx5

使用 Eclipse Paho [...] v5 客户端与 advertise 错误消息代理通信。

2.45.1. 内部

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

2.45.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.46. 平台 HTTP

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

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

2.46.1. 内部

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

2.46.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.46.3. 使用方法

2.46.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.46.3.2. 通过 Camel REST DSL 使用 platform-http

要将 Camel REST DSL 与 platform-http 组件搭配使用,除了 camel-quarkus- http 之外,还需要将 camel-quarkus-http 添加到 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")
        .route()
        .setBody(constant("Hello from /my-get-endpoint"))
        .endRest()
    .post("/my-post-endpoint")
        .route()
        .setBody(constant("Hello from /my-post-endpoint"))
        .endRest();
Copy to Clipboard Toggle word wrap
2.46.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.46.3.4. 保护 platform-http 端点

Quarkus 提供了各种安全机制,可用于保护 platform-http 端点的安全和验证机制。详情请查看 Quarkus 安全文档

在路由中,可以获取经过身份验证的用户及其关联的 SecurityIdentityPrincipal

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.* 配置选项。Quarkus.http.body.handle-file-uploads,quarkus.http.body.uploads-directoryquarkus.http.body.delete-uploaded-files-on-end.

2.46.4. 其他 Camel Quarkus 配置

2.46.4.1. 平台 HTTP 服务器配置

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

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

2.46.4.2. 字符编码

2.47. protobuf Jackson

marshal POJOs to Protobuf and back using Jackson.

2.47.1. 内部

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

2.47.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.48. Quartz

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

2.48.1. 内部

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

2.48.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.49. REST

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

2.49.1. 内部

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

2.49.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.49.3. 其他 Camel Quarkus 配置

这个扩展取决于 平台 HTTP 扩展,并将其配置为提供 REST 传输的组件。

使用 platform-http REST 传输时,path 参数名称中不允许使用一些字符。这包括 '-' 和 '$' 字符。

为了使以下示例 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}")
            .route()
                .setBody(constant("Hello World"))
            .endRest()

            // The non-dashed path parameter works by default
            .get("/undashed/param/{myParam}")
            .route()
                .setBody(constant("Hello World"))
            .endRest();
    }
}
Copy to Clipboard Toggle word wrap

Vert.x Web 文档 中有其他一些背景信息。

2.49.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.50. Salesforce

使用 Java DTO 与 Salesforce 沟通。

2.50.1. 内部

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

2.50.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.50.3. 使用方法

2.50.3.1. 使用 53- maven-plugin生成 Salesforce DTOs
注意

camel-salesforce-maven-plugin 仅由社区支持涵盖。

要为项目生成 Salesforce DTOs,请使用 mpath -maven-plugin。以下示例代码片段为帐户对象创建一个 DTO。

<plugin>
    <groupId>org.apache.camel.maven</groupId>
    <artifactId>camel-salesforce-maven-plugin</artifactId>
    <version>3.14.1</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.50.4. 原生模式的 SSL

这个扩展可自动启用原生模式的 SSL 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 Quarkus SSL 指南

2.51. SEDA

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

2.51.1. 内部

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

2.51.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.52. Slack

从 Slack 发送和接收消息。

2.52.1. 内部

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

2.52.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.52.3. 原生模式的 SSL

这个扩展可自动启用原生模式的 SSL 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 Quarkus SSL 指南

2.53. SOAP 数据格式

结合 Java 对象到 SOAP 消息和后。

2.53.1. 内部

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

2.53.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.54. SQL

执行 SQL 查询。

2.54.1. 内部

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

2.54.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.54.3. Camel Quarkus 限制

Oracle JDBC 驱动程序引入了一些 GraalVM native-image 配置,它一般会破坏 Camel Quarkus 和 Quarkus 中的序列化支持。如需更多详细信息,请参阅这个 quarkus 问题

因为这个问题,聚合存储库 无法在使用 Oracle db 的原生模式下运行。

2.54.4. 其他 Camel Quarkus 配置

2.54.4.1. 配置数据源

此扩展利用 Quarkus Agroal 支持 DataSource 支持。设置 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 选项 datasourcedataSourceRef 来指定在 SQL 端点上使用的。如需了解更多详细信息,请参阅 SQL 组件文档。

2.54.4.1.1. 带有 Quarkus Dev Services 的零配置

在 dev 和 test 模式中,您可以利用 Configuration Free Databases。Camel SQL 组件将自动配置为使用一个 DataSource,它指向与您选择的 JDBC 驱动程序类型匹配的数据库的容器化实例。

2.54.4.2. SQL 脚本

当将 sqlsql 存储 的端点配置为引用类路径中的脚本文件时,请设置以下配置属性以确保它们在原生模式中可用。

quarkus.native.resources.includes = queries.sql, sql/*.sql
Copy to Clipboard Toggle word wrap
2.54.4.3. 处于原生模式的 SQL 聚合存储库

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

另外,如果您的交换器是自定义类型,则必须通过向 @RegisterForReflection(serialization = true) 标注类声明来重新进行序列化。

2.55. Telegram

发送和接收充当 Telegram Bot API 的消息。

2.55.1. 内部

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

2.55.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.55.3. 原生模式的 SSL

这个扩展可自动启用原生模式的 SSL 支持。因此,您不需要自己为 application.properties 添加 quarkus.ssl.native=true。另请参阅 Quarkus SSL 指南

2.56. timer

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

2.56.1. 内部

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

2.56.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.57. XPath

针对 XML 有效负载评估 XPath 表达式。

2.57.1. 内部

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

2.57.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.57.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.58. XQuery

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

2.58.1. 内部

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

2.58.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.58.3. 其他 Camel Quarkus 配置

此组件能够从 classpath 中加载 XQuery 定义。为了使其也以原生模式工作,您需要使用 quarkus.native.resources.includes 属性将查询显式嵌入到原生可执行文件中。

例如,以下两个路由分别从名为 myxquery.txtanother-xquery.txt 的两个类路径资源加载一个 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.59. zip 文件

使用 java.util.zip.ZipStream 压缩和解压缩流。

2.59.1. 内部

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

2.59.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
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat