| // Do not edit directly! |
| // This file was generated by camel-quarkus-maven-plugin:update-extension-doc-page |
| [id="extensions-grpc"] |
| = gRPC |
| :page-aliases: extensions/grpc.adoc |
| :linkattrs: |
| :cq-artifact-id: camel-quarkus-grpc |
| :cq-native-supported: true |
| :cq-status: Stable |
| :cq-status-deprecation: Stable |
| :cq-description: Expose gRPC endpoints and access external gRPC endpoints. |
| :cq-deprecated: false |
| :cq-jvm-since: 1.0.0 |
| :cq-native-since: 1.0.0 |
| |
| ifeval::[{doc-show-badges} == true] |
| [.badges] |
| [.badge-key]##JVM since##[.badge-supported]##1.0.0## [.badge-key]##Native since##[.badge-supported]##1.0.0## |
| endif::[] |
| |
| Expose gRPC endpoints and access external gRPC endpoints. |
| |
| [id="extensions-grpc-whats-inside"] |
| == What's inside |
| |
| * xref:{cq-camel-components}::grpc-component.adoc[gRPC component], URI syntax: `grpc:host:port/service` |
| |
| Please refer to the above link for usage and configuration details. |
| |
| [id="extensions-grpc-maven-coordinates"] |
| == Maven coordinates |
| |
| https://{link-quarkus-code-generator}/?extension-search=camel-quarkus-grpc[Create a new project with this extension on {link-quarkus-code-generator}, window="_blank"] |
| |
| Or add the coordinates to your existing project: |
| |
| [source,xml] |
| ---- |
| <dependency> |
| <groupId>org.apache.camel.quarkus</groupId> |
| <artifactId>camel-quarkus-grpc</artifactId> |
| </dependency> |
| ---- |
| ifeval::[{doc-show-user-guide-link} == true] |
| Check the xref:user-guide/index.adoc[User guide] for more information about writing Camel Quarkus applications. |
| endif::[] |
| |
| [id="extensions-grpc-usage"] |
| == Usage |
| [id="extensions-grpc-usage-protobuf-generated-code"] |
| === Protobuf generated code |
| |
| Camel Quarkus gRPC can generate gRPC service stubs for `.proto` files. When using Maven, ensure that you have |
| enabled the `generate-code` goals of the `quarkus-maven-plugin` in your project build. |
| |
| [source,xml] |
| ---- |
| <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> |
| ---- |
| |
| With this configuration, you can put your service and message definitions into the `src/main/proto` directory and |
| the `quarkus-maven-plugin` will generate code from your `.proto` files. |
| |
| [id="extensions-grpc-usage-scanning-proto-files-with-imports"] |
| ==== Scanning `proto` files with imports |
| |
| The Protocol Buffers specification provides a way to import proto files. You can control the scope of dependencies to |
| scan by adding configuration property `quarkus.camel.grpc.codegen.scan-for-imports` property to `application.properties`. |
| The available options are outlined below. |
| |
| * `all` - Scan all dependencies |
| * `none` - Disable dependency scanning. Use only the proto definitions defined in `src/main/proto` or `src/test/proto` |
| * `groupId1:artifactId1,groupId2:artifactId2` - Scan only the dependencies matching the `groupId` and `artifactId` list |
| |
| The default value is `com.google.protobuf:protobuf-java`. |
| |
| [id="extensions-grpc-usage-scanning-proto-files-from-dependencies"] |
| ==== Scanning `proto` files from dependencies |
| |
| If you have proto files shared across multiple dependencies, you can generate gRPC service stubs for them by adding |
| configuration property `quarkus.camel.grpc.codegen.scan-for-proto` to `application.properties`. |
| |
| First add a dependency for the artifact(s) containing proto files to your project. Next, enable proto file |
| dependency scanning. |
| |
| [source,properties] |
| ---- |
| quarkus.camel.grpc.codegen.scan-for-proto=org.my.groupId1:my-artifact-id-1,org.my.groupId2:my-artifact-id-2 |
| ---- |
| |
| It is possible to include / exclude specific proto files from dependency scanning via configuration properties. |
| |
| The configuration property name suffix is the Maven `groupId` / `artifactId` for the dependency to configure includes / excludes on. |
| Paths are relative to the classpath location of the proto files within the dependency. Paths can be an explicit path to a proto file, |
| or as glob patterns to include / exclude multiple files. |
| |
| [source,properties] |
| ---- |
| 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 |
| ---- |
| |
| NOTE: The `:` character within property keys must be escaped with `\`. |
| |
| [id="extensions-grpc-usage-accessing-classpath-resources-in-native-mode"] |
| === Accessing classpath resources in native mode |
| |
| The gRPC component has various options where resources are resolved from the classpath: |
| |
| * `keyCertChainResource` |
| * `keyResource` |
| * `serviceAccountResource` |
| * `trustCertCollectionResource` |
| |
| When using these options in native mode, you must ensure that any such resources are included in the native image. |
| |
| This can be accomplished by adding the configuration property `quarkus.native.resources.includes` to `application.properties`. |
| For example, to include SSL / TLS keys and certificates. |
| |
| [source,properties] |
| ---- |
| quarkus.native.resources.includes = certs/*.pem,certs.*.key |
| ---- |
| |
| More information about selecting resources for inclusion in the native executable can be found in the xref:user-guide/native-mode.adoc#embedding-resource-in-native-executable[native mode guide]. |
| |
| |
| [id="extensions-grpc-camel-quarkus-limitations"] |
| == Camel Quarkus limitations |
| |
| [id="extensions-grpc-limitations-integration-with-quarkus-grpc-is-not-supported"] |
| === Integration with Quarkus gRPC is not supported |
| |
| At present there is no support for integrating Camel Quarkus gRPC with Quarkus gRPC. If you have both the `camel-quarkus-grpc` and `quarkus-grpc` extension dependency on the classpath, you are likely to encounter problems at build time when compiling your application. |
| |
| |
| [id="extensions-grpc-additional-camel-quarkus-configuration"] |
| == Additional Camel Quarkus configuration |
| |
| [width="100%",cols="80,5,15",options="header"] |
| |=== |
| | Configuration property | Type | Default |
| |
| |
| |icon:lock[title=Fixed at build time] [[quarkus.camel.grpc.codegen.enabled]]`link:#quarkus.camel.grpc.codegen.enabled[quarkus.camel.grpc.codegen.enabled]` |
| |
| If `true`, Camel Quarkus gRPC code generation is run for .proto files discovered from the `proto` directory, or from dependencies specified in the `scan-for-proto` or `scan-for-imports` options. When `false`, code generation for .proto files is disabled. |
| | `boolean` |
| | `true` |
| |
| |icon:lock[title=Fixed at build time] [[quarkus.camel.grpc.codegen.scan-for-proto]]`link:#quarkus.camel.grpc.codegen.scan-for-proto[quarkus.camel.grpc.codegen.scan-for-proto]` |
| |
| Camel Quarkus gRPC code generation can scan application dependencies for .proto files to generate Java stubs from them. This property sets the scope of the dependencies to scan. Applicable values: |
| |
| - _none_ - default - don't scan dependencies |
| - a comma separated list of _groupId:artifactId_ coordinates to scan |
| - _all_ - scan all dependencies |
| | `string` |
| | `none` |
| |
| |icon:lock[title=Fixed at build time] [[quarkus.camel.grpc.codegen.scan-for-imports]]`link:#quarkus.camel.grpc.codegen.scan-for-imports[quarkus.camel.grpc.codegen.scan-for-imports]` |
| |
| Camel Quarkus gRPC code generation can scan dependencies for .proto files that can be imported by protos in this applications. Applicable values: |
| |
| - _none_ - default - don't scan dependencies |
| - a comma separated list of _groupId:artifactId_ coordinates to scan |
| - _all_ - scan all dependencies The default is _com.google.protobuf:protobuf-java_. |
| | `string` |
| | `com.google.protobuf:protobuf-java` |
| |
| |icon:lock[title=Fixed at build time] [[quarkus.camel.grpc.codegen.scan-for-proto-includes]]`link:#quarkus.camel.grpc.codegen.scan-for-proto-includes[quarkus.camel.grpc.codegen.scan-for-proto-includes]` |
| |
| Package path or file glob pattern includes per dependency containing .proto files to be considered for inclusion. |
| | ``Map<String,List<String>>`` |
| | |
| |
| |icon:lock[title=Fixed at build time] [[quarkus.camel.grpc.codegen.scan-for-proto-excludes]]`link:#quarkus.camel.grpc.codegen.scan-for-proto-excludes[quarkus.camel.grpc.codegen.scan-for-proto-excludes]` |
| |
| Package path or file glob pattern includes per dependency containing .proto files to be considered for exclusion. |
| | ``Map<String,List<String>>`` |
| | |
| |=== |
| |
| [.configuration-legend] |
| {doc-link-icon-lock}[title=Fixed at build time] Configuration property fixed at build time. All other configuration properties are overridable at runtime. |
| |