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

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

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

开始课程

gRPC for Java:库与使用示例



在现代微服务架构中,服务间的有效交互至关重要。最高效的解决方案之一是 gRPC——Google 开发的远程过程调用(RPC)框架,基于 HTTP/2 和 Protocol Buffers。本文将介绍在 Java 中使用 gRPC 所需的库、如何配置项目以及编写一个简单的服务器和客户端。



gRPC for Java 的核心库



在 Java 中开发 gRPC 应用程序需要使用 grpc-java 生态系统。它包含三个关键组件:



  • grpc-core——框架核心,实现传输层和通道管理。
  • grpc-stub——基于 proto 文件生成客户端和服务器存根(stubs)。
  • grpc-protobuf——与 Protocol Buffers(protobuf)集成,用于数据序列化。


此外,可能还需要 protoc——用于从 .proto 文件生成 Java 类的编译器。在现代项目中,使用 Maven 或 Gradle 插件可以自动完成此过程。



使用 Maven 配置项目



在 pom.xml 中添加依赖:



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


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



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


通过 Protocol Buffers 定义服务



在 src/main/proto 目录下创建 hello.proto 文件:



syntax = "proto3";

package example;

service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {}}

message HelloRequest { string name = 1;}

message HelloReply { string message = 1;}


执行 mvn compile 后,将生成 HelloRequest、HelloReply 和 GreeterGrpc 类。



在 Java 中实现 gRPC 服务器



创建一个实现生成接口的服务器类:



import io.grpc.Server;import io.grpc.ServerBuilder;import io.grpc.stub.StreamObserver;

public class HelloServer { public static void main(String[] args) throws Exception { Server server = ServerBuilder.forPort(50051) .addService

推荐