java - 如何更改 Apache thrift 帧大小

标签 java thrift

我得到以下异常

Caused by: org.apache.thrift.transport.TTransportException: Frame size (1937007972) larger than max length (16384000)!
    at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:137) ~[libthrift-0.9.2.jar:0.9.2]
    at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101) ~[libthrift-0.9.2.jar:0.9.2]
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) ~[libthrift-0.9.2.jar:0.9.2]
    at org.apache.thrift.protocol.TBinaryProtocol.readStringBody(TBinaryProtocol.java:380) ~[libthrift-0.9.2.jar:0.9.2]
    at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:230) ~[libthrift-0.9.2.jar:0.9.2]
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69) ~[libthrift-0.9.2.jar:0.9.2]

有没有办法将大小更改为无限制,因为我不确定我的数据大小是多少。

最佳答案

据我所知,Java 有一个特定的 CTOR,可以为 the server side 传递帧大小。和 client side .

客户总监

/** 
* Constructor wraps around another transport 
*/ 
public TFramedTransport(TTransport transport, int maxLength) { 
   transport_ = transport; 
   maxLength_ = maxLength; 
 } 

服务器端工厂包括 CTOR

public static class Factory extends TTransportFactory { 
  private int maxLength_; 

  public Factory() { 
    maxLength_ = TFramedTransport.DEFAULT_MAX_LENGTH; 
  } 

  public Factory(int maxLength) { 
    maxLength_ = maxLength; 
  } 

  @Override 
  public TTransport getTransport(TTransport base) { 
     return new TFramedTransport(base, maxLength_); 
  } 
} 

所以解决方案是在构造Thrift协议(protocol)/传输栈时指定。

关于java - 如何更改 Apache thrift 帧大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32552828/

相关文章:

java - Wicket 添加一个大的 Pdf 作为资源

java - MySQL/Java特定字段审计

c# - Thrift/Proto 如何做?

python - 为什么 Thrift Binary 协议(protocol)序列化这么慢?

java - Maven - repo.spring.io 为 Spring 里程碑依赖项提供 404

java - 将两个二维数组扩展为一个更大的数组

java - 在 Spring Boot 日志记录中使用外部 JUL "logging.properties"

c++ - 如何在 Storm 和 Thrift 上使用 C++ spout/bolt 在 Storm 中使用

java - 在异步 Thrift 客户端中传递 URI/上下文路径

java - 使用 Hiveserver2 Thrift Java 客户端时请求挂起