gRPC代理方式
2025/6/20小于 1 分钟
gRPC代理方式
概述
BlockingStub:阻塞 通信方式
Stub:异步 通过监听处理的
FutureStub:同步与异步都支持,类似NettyFuture
注意:FutureStub只能应用 一元RPC
FutrueStub使用案例
public class GRPCClient {
public static void main(String[] args) {
ManagedChannel managedChannel = ManagedChannelBuilder.forAddress("localhost", 9000).usePlaintext().build();
try {
TestServiceGrpc.TestServiceFutureStub testServiceFutureStub = TestServiceGrpc.newFutureStub(managedChannel);
ListenableFuture<TestProto.TestResponse> responseListenableFuture = testServiceFutureStub.testSuns(TestProto.TestRequest.newBuilder().setName("xiaojren").build());
/* 同步操作
TestProto.TestResponse testResponse = responseListenableFuture.get();
System.out.println(testResponse.getResult());*/
/* responseListenableFuture.addListener(() -> {
System.out.println("异步的rpc响应 回来了....");
}, Executors.newCachedThreadPool());*/
Futures.addCallback(responseListenableFuture, new FutureCallback<TestProto.TestResponse>() {
@Override
public void onSuccess(TestProto.TestResponse result) {
System.out.println("result.getResult() = " + result.getResult());
}
@Override
public void onFailure(Throwable t) {
}
}, Executors.newCachedThreadPool());
System.out.println("后续的操作....");
managedChannel.awaitTermination(12, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
} finally {
managedChannel.shutdown();
}
}
}