Java 我能';t解析通过RabbitMQ发送的协议缓冲区

Java 我能';t解析通过RabbitMQ发送的协议缓冲区,java,playframework,rabbitmq,protocol-buffers,Java,Playframework,Rabbitmq,Protocol Buffers,我正在构建一个web服务,它从RabbitMQ发送和接收消息,它可以发送消息,而另一方可以读取并进行解析。但是web服务无法解析响应。我在Web服务中使用Poto3.3.3和java播放框架,消耗消息的服务将用C++编写,但是我有两个同样的错误(java和python),它们都是相同的错误,我不知道该怎么办。 信息如下: syntax = "proto3"; option optimize_for = LITE_RUNTIME; import "Subject.proto"; messag

我正在构建一个web服务,它从RabbitMQ发送和接收消息,它可以发送消息,而另一方可以读取并进行解析。但是web服务无法解析响应。我在Web服务中使用Poto3.3.3和java播放框架,消耗消息的服务将用C++编写,但是我有两个同样的错误(java和python),它们都是相同的错误,我不知道该怎么办。 信息如下:

syntax = "proto3";

option optimize_for = LITE_RUNTIME;

import "Subject.proto";

message FacialVerificationRequest{

  string event_id = 1;

  Subject subject = 2;

}

message MatcherResult {
    string id_subject = 1;
    float matcher_score = 2;
}

message FacialVerificationResponse{

  enum ResponseType {
    SUCCESS = 0;
    ERROR = 1;
    NOT_FOUND = 2;
  }

  string message = 1;

  ResponseType type = 2;

  MatcherResult matcher_result = 3;
}

代码如下:

try{
    strResponse = rpcClient.call(facialRequest.toByteArray());
    System.out.println(strResponse);
    String value = new String(strResponse.getBytes(), StandardCharsets.UTF_8);

    Verification.FacialVerificationResponse response = Verification.FacialVerificationResponse.parseFrom(
                    strResponse.getBytes());

    System.out.println(response);
    }
catch (Exception e){
        e.printStackTrace();
    }
以及StackTrace:

com.google.protobuf.InvalidProtocolBufferException$InvalidWireTypeException: Protocol message tag had invalid wire type.
    at com.google.protobuf.InvalidProtocolBufferException.invalidWireType(InvalidProtocolBufferException.java:111)
    at com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:557)
    at com.google.protobuf.GeneratedMessageV3.parseUnknownField(GeneratedMessageV3.java:320)
    at model.Verification$FacialVerificationResponse.<init>(Verification.java:1543)
    at model.Verification$FacialVerificationResponse.<init>(Verification.java:1473)
    at model.Verification$FacialVerificationResponse$1.parsePartialFrom(Verification.java:2403)
    at model.Verification$FacialVerificationResponse$1.parsePartialFrom(Verification.java:2397)
    at com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:158)
    at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:191)
    at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:203)
    at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:208)
    at com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
    at model.Verification$FacialVerificationResponse.parseFrom(Verification.java:1888)
    at controllers.VerificationController.index(VerificationController.java:36)
    [...]
com.google.protobuf.InvalidProtocolBufferException$InvalidWireTypeException:协议消息标记的导线类型无效。
位于com.google.protobuf.InvalidProtocolBufferException.invalidWireType(InvalidProtocolBufferException.java:111)
位于com.google.protobuf.UnknownFieldSet$Builder.mergeFieldFrom(UnknownFieldSet.java:557)
位于com.google.protobuf.GeneratedMessageV3.parseUnknownField(GeneratedMessageV3.java:320)
在model.Verification$FacicalVerificationResponse.(Verification.java:1543)
在model.Verification$FacicalVerificationResponse(Verification.java:1473)
在model.Verification$facicalverificationresponse$1.parsePartialFrom(Verification.java:2403)
在model.Verification$FacicalVerificationResponse$1.parsePartialFrom(Verification.java:2397)
位于com.google.protobuf.AbstractParser.parsePartialFrom(AbstractParser.java:158)
位于com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:191)
位于com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:203)
位于com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:208)
位于com.google.protobuf.AbstractParser.parseFrom(AbstractParser.java:48)
在model.Verification$FacicalVerificationResponse.parseFrom(Verification.java:1888)
at controllers.VerificationController.index(VerificationController.java:36)
[...]

我发送的是字符串的字节,而我应该发送FacicalVerificationResponse的字节,所以这就是错误。

您能检查响应返回的格式吗?也许它不是“wire format”,而是textproto。@cs95我发送的是VerificationFacialResponse,但我是以字符串形式发送的。我应该将其作为VerificationFacialResponse.getBytes()发送