java整合grpc

前提说明

我们使用新版的proto3
JDK(version >=1.8)

步骤

在本机安装protoc编译器

  • mac: brew install protoc
  • linux: apt install -y protobuf-compiler
  • win: https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/protoc-3.19.4-win64.zip(win用户可能需要配置环境变量,各位作为IT精英这里不赘述了)
验证安装结果

protoc --version

maven/gradle配置

特殊强调:在导入依赖之前一定要使用protoc --version看一下proto编译器的版本,这个版本要与下面的依赖版本一致,不一致的版本导出的代码也可能不同

  • gradle: 在dependencies中追加
implementation group: 'com.google.protobuf', name: 'protobuf-java', version: '3.19.4'
  • maven: 在dependencies标签中追加
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.19.4</version>
</dependency>

编写proto文件

贴出一个测试样例

syntax = "proto3"; // 必须加的,对proto版本声明
option go_package="./pb"; // 在go中编译后会放在pb包下
option java_package="com.birdy.proto.service"; // 在java中编译会放在com.birdy.proto.service包下

message CPU {
  string brand = 1;
  string name = 2;
  uint32 number_core = 3;
  uint32 number_threads = 4;
  double min_ghz = 5;
  double max_ghz = 6;
}
message GPU {
  string brand = 1;
  string name = 2;
  double min_ghz = 3;
  double max_ghz = 4;
}

使用protoc编译

protoc --java_out=src/main/java src/main/proto/*.proto

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Spring Boot中整合gRPC,可以按照以下步骤进行操作: 1. 首先,在pom.xml文件中添加gRPCprotobuf的依赖。例如: ```xml <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty-shaded</artifactId> <version>1.40.1</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-protobuf</artifactId> <version>1.40.1</version> </dependency> <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-stub</artifactId> <version>1.40.1</version> </dependency> ``` 2. 定义一个gRPC服务,使用Protocol Buffers(protobuf)编写服务定义。例如,创建一个名为`HelloWorld.proto`的文件,定义一个简单的HelloWorld服务: ```protobuf syntax = "proto3"; package com.example.grpc; service HelloWorldService { rpc sayHello (HelloRequest) returns (HelloResponse); } message HelloRequest { string name = 1; } message HelloResponse { string message = 1; } ``` 3. 使用protobuf插件生成Java类文件。可以通过在pom.xml中配置protobuf插件来实现。例如: ```xml <build> <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.17.3:exe:${os.detected.classifier}</protocArtifact> <pluginId>grpc-java</pluginId> <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.40.1:exe:${os.detected.classifier}</pluginArtifact> </configuration> <executions> <execution> <goals> <goal>compile</goal> <goal>compile-custom</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ``` 运行`mvn clean install`命令,将会生成Java类文件。 4. 创建实现gRPC服务的类。例如,创建一个名为`HelloWorldServiceImpl`的类,实现HelloWorldService: ```java import io.grpc.stub.StreamObserver; import com.example.grpc.HelloRequest; import com.example.grpc.HelloResponse; import com.example.grpc.HelloWorldServiceGrpc; public class HelloWorldServiceImpl extends HelloWorldServiceGrpc.HelloWorldServiceImplBase { @Override public void sayHello(HelloRequest request, StreamObserver<HelloResponse> responseObserver) { String message = "Hello, " + request.getName() + "!"; HelloResponse response = HelloResponse.newBuilder().setMessage(message).build(); responseObserver.onNext(response); responseObserver.onCompleted(); } } ``` 5. 在Spring Boot应用程序中配置gRPC服务。例如,创建一个名为`GrpcServerConfiguration`的类,配置gRPC服务器: ```java import org.lognet.springboot.grpc.GRpcService; import com.example.grpc.HelloWorldServiceGrpc; @Configuration public class GrpcServerConfiguration { @Bean public Server grpcServer() { return ServerBuilder.forPort(9090).addService(new HelloWorldServiceImpl()).build(); } @GRpcService public HelloWorldServiceGrpc.HelloWorldServiceImplBase helloWorldService() { return new HelloWorldServiceImpl(); } } ``` 6. 启动Spring Boot应用程序,并在9090端口上监听gRPC请求。你可以使用gRPC客户端与服务进行通信了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

edanhuang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值