https://blog.csdn.net/qq_45251343/article/details/139092591
下文,
package com.client;
import io.grpc.examples.HelloGrpc;
import io.grpc.examples.HelloOuterClass;
import io.grpc.stub.StreamObserver;
/**
* @author step
* @description: TODO
* @date 2024/5/21 下午3:04
*/
public class HelloServiceImpl extends HelloGrpc.HelloImplBase {
/*
1. 接受client提交的参数, request.getParameter()
2. 业务处理,service+dao 调用对应的业务功能
3. 提供返回值
* */
@Override
public void sayHello(HelloOuterClass.HelloRequest request, StreamObserver<HelloOuterClass.HelloResponse> responseObserver) {
// 1. 接受client 的请求参数
String name = request.getName();
//2. 业务处理
System.out.println(name);
// 3.封装响应
// 3.1 创建相应对象的构造者
HelloOuterClass.HelloResponse.Builder builder = HelloOuterClass.HelloResponse.newBuilder();
// 3.2 填充数据
builder.setMessage(name);
// 3.3 封装响应
HelloOuterClass.HelloResponse buildHelloRespons = builder.build();
// 后两句必不可少,告诉填充结束,可以返回
responseObserver.onNext(buildHelloRespons);
responseObserver.onCompleted();
}
public static void main(String[] args) throws InterruptedException, IOException {
// 1. 绑定端口
ServerBuilder serverBuilder = ServerBuilder.forPort(9099);
// 2. 发布服务,有几个发几个
serverBuilder.addService(new HelloServiceImpl());
// serverBuilder.addService(new HelloServiceImpl1());
// serverBuilder.addService(new HelloServiceImpl2());
// serverBuilder.addService(new HelloServiceImpl3());
// 3. 创建服务对象
Server build = serverBuilder.build();
build.start();
build.awaitTermination();
}
}
package com.server;
import io.grpc.ManagedChannel;
import io.grpc.ManagedChannelBuilder;
import io.grpc.examples.HelloGrpc;
import io.grpc.examples.HelloOuterClass;
/**
* @author step
* @description: TODO
* @date 2024/5/21 下午3:17
*/
public class GrpcClient {
public static void main(String[] args) {
// 1.创建通信管道
ManagedChannel managedChannel = ManagedChannelBuilder.forAddress("localhost", 9099).usePlaintext().build();
// 2. 获得代理对象 stub
HelloGrpc.HelloBlockingStub helloBlockingStub = HelloGrpc.newBlockingStub(managedChannel);
// 3,完成rPC迪用
//3.1 准备参数
HelloOuterClass.HelloRequest.Builder builder = HelloOuterClass.HelloRequest.newBuilder();
builder.setName("baba");
HelloOuterClass.HelloRequest buildRequest = builder.build();
HelloOuterClass.HelloResponse helloResponse = helloBlockingStub.sayHello(buildRequest);
String message = helloResponse.getMessage();
System.out.println(message);
}
}