Java Micronaut应用中的截断协议
我有一个Micronaut(版本2.1.4)应用程序,它通过HTTP使用Protobuf消息 以下是控制器示例:Java Micronaut应用中的截断协议,java,microservices,protocol-buffers,netty,micronaut,Java,Microservices,Protocol Buffers,Netty,Micronaut,我有一个Micronaut(版本2.1.4)应用程序,它通过HTTP使用Protobuf消息 以下是控制器示例: @Post @Consumes(ProtobufferCodec.PROTOBUFFER_ENCODED) @Produces(ProtobufferCodec.PROTOBUFFER_ENCODED) public HttpResponse<MyResponse> ingestData(@Body byte[] body) throws InvalidProtoco
@Post
@Consumes(ProtobufferCodec.PROTOBUFFER_ENCODED)
@Produces(ProtobufferCodec.PROTOBUFFER_ENCODED)
public HttpResponse<MyResponse> ingestData(@Body byte[] body)
throws InvalidProtocolBufferException {
MyProto myOjbect = MyProto.parseFrom(body);
MyResponse responseBody = myService.processData(body);
return HttpResponse.ok(responseBody);
}
例外是正确的,正文(字节[])被截断(不完整),长度与我通过CURL发送的正文不同。我还验证了内容长度
标题中的值与字节[]
(protobuf)的长度不同,因为字节[]
的长度更小
我无法复制这个问题,只能在生产中发生
有什么想法吗
“感情”:
- 大的请求也会发生这种情况
- 可能Netty有一些参数,即使请求的大小允许,它也会被截断、切碎或类似,从而影响protobuf(字节[])
- 性能(内存)问题
- io.micronaut:micronaut物料清单:2.1.4
- io.micronaut:micronaut http服务器网络
- io.micronaut.grpc:micronaut protobuff支持:1.0.1
内容长度>字节[]
)
om.google.protobuf.InvalidProtocolBufferException: While parsing a protocol message, the input ended unexpectedly in the middle of a field. This could mean either that the input has been truncated or that an embedded message misreported its own length.
at com.google.protobuf.InvalidProtocolBufferException.truncatedMessage(InvalidProtocolBufferException.java:84)
at com.google.protobuf.CodedInputStream$ArrayDecoder.pushLimit(CodedInputStream.java:1189)
at com.google.protobuf.CodedInputStream$ArrayDecoder.readMessage(CodedInputStream.java:886)
...
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)
....