gpt4 book ai didi

grpc - 如何在 gRPC 的 responseObserver.onError() 中传输详细的异常消息

转载 作者:行者123 更新时间:2023-12-05 03:04:51 24 4
gpt4 key购买 nike

我正在尝试传输描述 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())));
}
}
}

如上所述,我无法通过“new Metadata("xxxx")”创建元数据,那么如何将我的特殊消息包装在 responseObserver.onError 中?

最佳答案

要发送详细消息,请将其附加到 StatuswithDescription :

Status.ABORTED.withDescription("The detailed reason")

该描述有助于开发者调试系统。它不适用于机器消耗。

Metadata 的构造函数是公开的,但没有参数。您使用 new Metadata() 创建它然后可以用 put(Key<T> key, T value) 之类的东西修改它.元数据对于发送机器可理解的错误详细信息很有用。

关于grpc - 如何在 gRPC 的 responseObserver.onError() 中传输详细的异常消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52668681/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com