2016-03-20 111 views
2

我使用最新版本的駱駝和Netty中的彈簧,並具有以下定義:的Java駱駝的Netty TCP消費者只接收1024字節

<bean id="transformIncoming" class="com.hugin.camel.transform.IncomingMessageTransformer"/> 
<from uri="netty4:tcp://127.0.0.1:8888?allowDefaultCodec=false&amp;encoder=#byteArrayEncoder"/> 

<route> 
<transform> 
    <method ref="transformIncoming" method="process"></method> 
</transform> 

我定義一個類來處理傳入的TCP請求:

我的問題是,無論傳入消息的大小,buf變量永遠不會超過1024個字節,所以我的請求被截斷。

根據組件定義receiveBufferSize應該是65536字節。我如何處理大量請求?

+0

你是什麼意思的「消息」?你在使用某種消息協議嗎?您認爲接收郵件的代碼在哪裏? –

回答

-1

receiveBufferSize屬性僅用於UDP使用者,用於配置SO_RCVBUF套接字選項。它不用於TCP端點。

你不應該依賴camel來實現你的協議:沒有一個合適的解碼器,每個tcp幀都會發送一條消息,你不能保證幀的大小。

你應該在Netty中實現你的協議,並生成由駱駝處理的對象。 Netty擁有所有需要通過tcp流重構協議的工具。