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