Bir protobuf nesnesini Ruby'de serileştirmenin ve Java'da ayrıştırmanın doğru yolu nedir? Bu otomatik test için, bu mesajı bir Rabbit kuyruğunda dinliyoruz.Ruby ve Java arasında protobuf nesnesini serileştirme/ayrıştırma nasıl yapılır?
Yayıncı (Yakut):
protoNew = Protobuf::Request.new
protoNew.request = request
protoNew.id = id.to_i
protoNew.authentication = authentication
return protoNew.serialize_to_string
Tüketici (Java):
çözümlenirken hata protobuf: com.google İşte
@Override public void onMessage(Message message, Channel channel) { ProtoRequest protoRequest; try { protoRequest = ProtoRequest.parseFrom(message.getBody()); } catch (InvalidProtocolBufferException e1) { logger.error("Error parsing protobuf", e1); }
görüyorum hatadır. protobuf.InvalidProtocolBufferException: Protokol ileti uç grup etiketi beklenen etiketle eşleşmedi. com.google.protobuf.InvalidProtocolBufferException.invalidEndTag (InvalidProtocolBufferException.java:94) en [protobuf-java 2.6.1.jar:] com.google.protobuf.CodedInputStream.checkLastTagWas (CodedInputStream.java:174) en [protobuf -java-2.6.1.jar:] com.google.protobuf.AbstractParser.parsePartialFrom adresinde (AbstractParser.java:139) [protobuf-java-2.6.1.jar:] com.google.protobuf.AbstractParser adresinde. parseFrom (AbstractParser.java:168) [protobuf-java-2.6.1.jar:] , com.google.protobuf.AbstractParser.parseFrom'da (AbstractParser.java:180) [protobuf-java-2.6.1.jar:] Com.google.protobuf.AbstractParser.parseFrom adresinde (AbstractParser.java:185) [protobuf-java-2.6.1.jar:] com.google.protobuf.AbstractParser.parseFrom'da (AbstractParser.java:49) [protobuf -java-2.6.1.jar:]
Teşekkür iyi iş gibi görünüyor unutmayınız! Bu küçük bir değişiklik ile çalıştı, "protoRequest = ProtoRequest.parseFrom (Base64.decode (new String (message.getBody()))) kullanarak bitti;" java tarafında, message.getBody() bir bayt dizisi döndürdüğü için. – crobicha