Я пытаюсь передать подробное сообщение с описанием исключения с помощью gRPC. Я узнал, что мне следует использовать responseObserver.onError для его передачи, а gRPC предлагает метаданные для этого, но я до сих пор не знаю, куда их поместить, потому что я не могу создать метаданные, все конструкторы метаданных не общественные.
static class GrpcTestService extends GrpcTestGrpc.GrpcTestImplBase {
@Override
public void sayHello(HelloRequest req, StreamObserver<HelloResponse> responseObserver) {
try {
HelloResponse reply = HelloResponse.newBuilder().setMessage("got it ! " + req.getName()).build();
throw new RuntimeException("I'm an exception!!!");
// responseObserver.onNext(reply);
// responseObserver.onCompleted();
} catch (Exception e) {
responseObserver.onError(new StatusRuntimeException(Status.ABORTED, new Metadata("metadata exception".getBytes())));
}
}
}
Как и выше, я не могу создать метаданные с помощью «новых метаданных (« xxxx »)», так как я могу заключить свое специальное сообщение в responseObserver.onError?