gRPC for Java:库、配置和代码示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

gRPC for Java:库、配置和使用示例



gRPC 是一个由 Google 开发的现代高性能远程过程调用(RPC)框架。它使用 Protocol Buffers(protobuf)作为接口定义和数据序列化语言,并使用 HTTP/2 进行传输。在 Java 生态系统中,gRPC 允许您创建快速、类型安全且可扩展的微服务。在本页面中,我们将介绍主要库、项目配置过程,并提供服务器和客户端的工作示例。



Java 中 gRPC 的主要库



在 Java 中使用 gRPC 需要三个关键依赖项:

  • io.grpc:grpc-netty-shaded — 基于 Netty 的传输层。提供 HTTP/2 支持和安全性(TLS)。推荐用于大多数项目。
  • io.grpc:grpc-protobuf — 与 Protocol Buffers 的集成。允许从 .proto 文件生成 Java 类。
  • io.grpc:grpc-stub — 用于创建客户端和服务器存根(stubs)的库。简化远程方法的调用。


此外,可能还需要 protobuf-java(用于处理消息)和 protobuf-gradle-plugin(或 Maven 的等效插件)以在构建阶段生成代码。



项目配置(Maven)



在 pom.xml 中添加以下依赖项:



<dependencies>    <dependency>        <groupId>io.grpc</groupId>        <artifactId>grpc-netty-shaded</artifactId>        <version>1.62.0</version>    </dependency>    <dependency>        <groupId>io.grpc</groupId>        <artifactId>grpc-protobuf</artifactId>        <version>1.62.0</version>    </dependency>    <dependency>        <groupId>io.grpc</groupId>        <artifactId>grpc-stub</artifactId>        <version>1.62.0</version>    </dependency>    <dependency>        <groupId>javax.annotation</groupId>        <artifactId>javax.annotation-api</artifactId>        <version>1.3.2</version>    </dependency></dependencies>


同时,添加用于从 .proto 文件生成代码的插件:



<build>    <extensions>        <extension>            <groupId>kr.motd.maven</groupId>            <artifactId>os-maven-plugin</artifactId>            <version>1.7.1</version>        </extension>    </extensions>    <plugins>        <plugin>            <groupId>org.xolstice.maven.plugins</groupId>            <artifactId>protobuf-maven-plugin</artifactId>            <version>0.6.1</version>            <configuration>                <protocArtifact>com.google.protobuf:protoc:3.24.0:exe:${os.detected.classifier}</protocArtifact>                <pluginId>grpc-java</pluginId>                <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.62.0:exe:${os.detected.classifier}</pluginArtifact>            </configuration>            <executions>                <execution>                    <goals>                        <goal>compile</goal>                        <goal>compile-custom</goal>                    </goals>                </execution>            </executions>        </plugin>    </plugins></build>


创建 .proto 文件



在文件 src/main/proto/hello.proto 中定义服务和消息:



syntax = "proto3";

package hello;

service Greet

推荐