2016-03-20 82 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流重构协议的工具。