2.42. gRPC


公开 gRPC 端点并访问外部 gRPC 端点。

2.42.1. 什么是内部

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

2.42.2. Maven 协调

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

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

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

2.42.3. 使用方法

2.42.3.1. protobuf 生成的代码

Camel Quarkus gRPC 可以为 .proto 文件生成 gRPC 服务存根。使用 Maven 时,请确保已在项目构建中启用了 quarkus-maven-plugingenerate-code 目标。

<build>
    <plugins>
        <plugin>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-maven-plugin</artifactId>
            <version>${quarkus.platform.version}</version>
            <extensions>true</extensions>
            <executions>
                <execution>
                    <goals>
                        <goal>build</goal>
                        <goal>generate-code</goal>
                        <goal>generate-code-tests</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

使用这个配置,您可以将服务和消息定义放在 src/main/proto 目录中,quarkus-maven-plugin 将从您的 .proto 文件中生成代码。

2.42.3.1.1. 使用导入扫描 原型 文件

协议缓冲器规格提供了一种导入原型文件的方法。您可以通过将配置属性 quarkus.camel.grpc.codegen.scan-for-imports 属性添加到 application.properties 来控制要扫描的依赖项范围。可用的选项概述如下。

  • All - Scan 所有依赖项
  • none - 禁用依赖项扫描。仅使用 src/main/protosrc/test/proto中定义的 proto 定义
  • groupId1:artifactId1,groupId2:artifactId 2- Scan only dependencies matching the groupIdartifactId list

默认值为 com.google.protobuf:protobuf-java

2.42.3.1.2. 从依赖项扫描 原型 文件

如果您有多个依赖项之间共享的 proto 文件,您可以通过将配置属性 quarkus.camel.grpc.codegen.scan-for-proto 添加到 application.properties 来为它们生成 gRPC 服务 stub。

首先,将包含 proto 文件的工件依赖项添加到项目中。接下来,启用 proto 文件依赖项扫描。

quarkus.camel.grpc.codegen.scan-for-proto=org.my.groupId1:my-artifact-id-1,org.my.groupId2:my-artifact-id-2

可以通过配置属性从依赖项扫描中包含/排除特定的 proto 文件。

configuration 属性名称后缀是要配置的依赖关系的 Maven groupId / artifactId。路径相对于依赖项中 proto 文件的 classpath 位置。路径可以是到 proto 文件的显式路径,也可以是包含/排除多个文件的 glob 模式。

quarkus.camel.grpc.codegen.scan-for-proto-includes."<groupId>\:<artifactId>"=foo/**,bar/**,baz/a-proto.proto
quarkus.camel.grpc.codegen.scan-for-proto-excludes."<groupId>\:<artifactId>"=foo/private/**,baz/another-proto.proto
注意

属性键中的 : 字符必须使用 \ 进行转义。

2.42.3.2. 在原生模式中访问类路径资源

gRPC 组件具有各种选项,从 classpath 解析资源:

  • keyCertChainResource
  • keyResource
  • serviceAccountResource
  • trustCertCollectionResource

在原生模式中使用这些选项时,您必须确保原生镜像中包含任何此类资源。

这可以通过将配置属性 quarkus.native.resources.includes 添加到 application.properties 来实现。例如,要包含 SSL / TLS 密钥和证书。

quarkus.native.resources.includes = certs/*.pem,certs.*.key

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

2.42.4. Camel Quarkus 限制

2.42.4.1. 不支持与 Quarkus gRPC 集成

目前不支持将 Camel Quarkus gRPC 与 Quarkus gRPC 集成。如果 camel-quarkus-grpcquarkus-grpc 扩展依赖于 classpath,则可能会在编译应用程序时在构建时遇到问题。

2.42.5. 其他 Camel Quarkus 配置

Expand
配置属性类型default

quarkus.camel.grpc.codegen.enabled

如果为 true,则针对从 proto 目录发现的 .proto 文件,或者从 scan-for- proto scan-for-imports 选项中指定的依赖项运行 Camel Quarkus gRPC 代码生成。为 false 时,禁用 .proto 文件的代码生成。

布尔值

true

quarkus.camel.grpc.codegen.scan-for-proto

Camel Quarkus gRPC 代码生成可扫描 .proto 文件的应用程序依赖项,以便从它们生成 Java stub。此属性设置要扫描的依赖项范围。适用的值:

- None- default - 不扫描依赖项 - 以逗号分隔的 groupId:artifactId 协调列表扫描 - 所有 扫描所有依赖项

string

none

quarkus.camel.grpc.codegen.scan-for-imports

Camel Quarkus gRPC 代码生成可以扫描 .proto 文件的依赖项,这些文件可通过此应用程序中的 protos 导入。适用的值:

- None- default - 不扫描依赖项 - 以逗号分隔的 groupId:artifactId 协调列表,进行扫描 - 所有 扫描所有依赖项都默认为 com.google.protobuf:protobuf-java

string

com.google.protobuf:protobuf-java

[[quarkus-camel-grpc-codegen-scan-for-proto-includes-​scan-for-proto-includes] quarkus.camel.grpc.codegen.scan-for-proto-includes."scan-for-proto-includes"

软件包路径或文件 glob 模式包括每个依赖项,其中包含要考虑的 .proto 文件。

Map<String,List<String>>

 

[[quarkus-camel-grpc-codegen-scan-for-proto-excludes-​scan-for-proto-excludes]] quarkus.camel.grpc.codegen.scan-for-proto-excludes."scan-for-proto-excludes"

软件包路径或文件通配模式包括每个依赖项,包含要考虑排除的 .proto 文件。

Map<String,List<String>>

 

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

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部