我有用java編寫的服務器應用程序和常規客戶端應用程序。 我的服務器上來請求和做某事。我使用Thonft和TNonBlockingServer。Thrift TNonblockingServer EOF異常
public static void nonBlockingServer(HbaseLayerService.Processor processor) {
try {
final Integer serverPort = ConfigurationManager.instance().getServerPort();
TNonblockingServerTransport serverTransport = new TNonblockingServerSocket(serverPort);
TServer server = new TNonblockingServer(new TNonblockingServer.Args(serverTransport).processor(processor));
server.serve();
} catch (Exception e) {
Throwables.propagate(e);
}
}
我的客戶發送〜100Mb的數據
TTransport transport = new TFramedTransport(new TSocket('localhost', 12345, 100000))
transport.open()
TProtocol protocol = new TBinaryProtocol(transport);
HbaseLayerService.Client client = new HbaseLayerService.Client(protocol);
def putList = [] //~1500000 objects (string, string, string, int, byte[])
client.putEvent(new PutEventsOperation(putsToSend));
此操作過程中,我有一個錯誤:
Exception in thread "main" org.apache.thrift.transport.TTransportException
at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86)
at org.apache.thrift.transport.TFramedTransport.readFrame(TFramedTransport.java:129)
at org.apache.thrift.transport.TFramedTransport.read(TFramedTransport.java:101)
at org.apache.thrift.transport.TTransport.readAll(TTransport.java:86)
at org.apache.thrift.protocol.TBinaryProtocol.readAll(TBinaryProtocol.java:429)
at org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:318)
at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:219)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:69)
at communication_struct.thrift.HbaseLayerService$Client.recv_putEvent(HbaseLayerService.java:96)
此異常的類型爲4:END_OF_FILE。
隨着TSimpleServer一切正常,但我想採取幾個連接,並在一個線程隊列中進行操作。
這個問題不是關於[thrift-protocol]。這是關於運輸。 – JensG
「*〜1500000 objects *」 - [數據塊的大小是多少?](https://github.com/apache/thrift/blob/7a8b286b3f03046a1b89f405129dbc042ddae818/lib/java/src/org/apache/thrift/transport/ TIOStreamTransport.java) – JensG
它不小於50 MB,不超過100MB –