@GRpcService public class MyService extends MyServiceGrpc.MyServiceImplBase { @Override public StreamObserver<MyRequest> myMethod(StreamObserver<MyResponse> responseObserver) { return new StreamObserver<MyRequest>() { @Override public void onNext(MyRequest request) { MyResponse response = generateResponse(request); responseObserver.onNext(response); } @Override public void onError(Throwable t) { } @Override public void onCompleted() { responseObserver.onCompleted(); } }; } private MyResponse generateResponse(MyRequest request) { } } public class MyClient { private MyServiceGrpc.MyServiceStub stub; public void myMethod() { StreamObserver<MyResponse> responseObserver = new StreamObserver<MyResponse>() { @Override public void onNext(MyResponse response) { } @Override public void onError(Throwable t) { } @Override public void onCompleted() { } }; StreamObserver<MyRequest> requestObserver = stub.myMethod(responseObserver); requestObserver.onNext(request1); requestObserver.onNext(request2); // ... requestObserver.onCompleted(); } } @GRpcService public class MyService extends MyServiceGrpc.MyServiceImplBase { @Override public void myMethod(MyRequest request, StreamObserver<MyResponse> responseObserver) { ServerCallStreamObserver<MyResponse> serverCallStreamObserver = (ServerCallStreamObserver<MyResponse>) responseObserver; serverCallStreamObserver.disableAutoRequest(); serverCallStreamObserver.request(1); for (int i = 0; i < 10; i++) { MyResponse response = generateResponse(request); serverCallStreamObserver.onNext(response); } serverCallStreamObserver.onCompleted(); } private MyResponse generateResponse(MyRequest request) { } } public class MyClient { private MyServiceGrpc.MyServiceStub stub; public void myMethod() { ClientCallStreamObserver<MyResponse> clientCallStreamObserver = (ClientCallStreamObserver<MyResponse>) responseObserver; clientCallStreamObserver.disableAutoInboundFlowControl(); clientCallStreamObserver.setOnReadyHandler(new Runnable() { @Override public void run() { while (clientCallStreamObserver.isReady()) { MyResponse response = clientCallStreamObserver.receive(); clientCallStreamObserver.request(1); } } }); stub.myMethod(request, responseObserver); } } @GRpcService public class MyService extends MyServiceGrpc.MyServiceImplBase { @Override public StreamObserver<MyRequest> myMethod(StreamObserver<MyResponse> responseObserver) { return new StreamObserver<MyRequest>() { @Override public void onNext(MyRequest request) { try { MyResponse response = generateResponse(request); responseObserver.onNext(response); } catch (Exception e) { responseObserver.onError(e); } } @Override public void onError(Throwable t) { } @Override public void onCompleted() { responseObserver.onCompleted(); } }; } private MyResponse generateResponse(MyRequest request) { } } public class MyClient { private MyServiceGrpc.MyServiceStub stub; public void myMethod() { StreamObserver<MyResponse> responseObserver = new StreamObserver<MyResponse>() { @Override public void onNext(MyResponse response) { } @Override public void onError(Throwable t) { } @Override public void onCompleted() { } }; StreamObserver<MyRequest> requestObserver = stub.myMethod(responseObserver); try { requestObserver.onNext(request1); requestObserver.onNext(request2); // ... requestObserver.onCompleted(); } catch (Exception e) { requestObserver.onError(e); } } }


上一篇:
下一篇:
切换中文