在具有全双工 ReadStream 和 WriteStream 的 GRPC 的情况下发送错误

时间:2021-02-04 14:29:59

标签: vert.x grpc-java

有人可以帮助我了解如何在 ReadStream 和 WriteStream 全双工的情况下发送错误。

这是示例 proto 文件。

syntax = "proto3";

option java_multiple_files = true;
option java_package = "com.pace.vertx.grpc.generated";
package com.pace.vertx.grpc.generated;


service ArrangementService {
  rpc GetArrangementDetails (stream ArrangementRequest) returns (stream ArrangementAllDetails) {}
}

message ArrangementRequest {
  string arrangementId = 1;
}

message ArrangementAllDetails {
  string arrangementDetails = 1;
}

这是我目前的代码。

    BindableService vertxArrangementServiceGrpc = new VertxArrangementServiceGrpc.ArrangementServiceVertxImplBase() {
        @Override
        public void getArrangementDetails(ReadStream<ArrangementRequest> request, WriteStream<ArrangementAllDetails> response) {
            Pump.pump((ReadStream)request, response).start();
            request.handler(arrangementRequest -> {
                couchbaseDAO.getReactiveCollection()
                        .get(arrangementRequest.getArrangementId())
                        .map(getResult -> getResult
                                .contentAsObject()
                                .removeKey("key_tx")
                                .removeKey("version"))
                        .subscribe(
                                jsonObject -> response.end(ArrangementAllDetails.newBuilder().setArrangementDetails(jsonObject.toString()).build()),
                                error -> ?????
                        );

            });
        }
    }
            .withCompression("gzip");

如何将错误发送回错误订阅块中?

1 个答案:

答案 0 :(得分:0)

This answer 到“gRPC 中丰富错误处理的模式”问题可能会有所帮助。