Я пытаюсь передать подробное сообщение, описывающее исключение, с помощью gRPC.Я узнал, что должен использовать responseObserver.onError для его передачи, и gRPC предлагает метаданные, чтобы сделать это, но я до сих пор не знаю, где его разместить, потому что я не могу создать метаданные, все конструктор метаданных неpublic.
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?