如何在AsyncHttpClient中增加默认缓冲区大小?

时间:2015-11-23 10:21:01

标签: netty asynchttpclient ning

如何在AsyncHttpClient中增加默认缓冲区大小。 我正在使用以下代码从流服务器读取消息(Http long pooling)。

当服务器发送超过8KB的消息时,我的消息将被分成块。

前: -

原始消息: -

这是我的测试消息

收到消息: -

这是我的

测试

消息

有没有办法增加缓冲区大小?所以我在一个部分收到了整个信息?

我的代码

AsyncHttpClientConfig.Builder config = new AsyncHttpClientConfig.Builder()
    .setConnectionTimeoutInMs(120000)
    .setRequestTimeoutInMs(-1)
    .setIdleConnectionTimeoutInMs(120000)
    .setMaxConnectionLifeTimeInMs(-1);          
    AsyncHttpClient client = new AsyncHttpClient(config.build());   
    Future<String> f = client.prepareGet("http://IP:PORT/context/test").execute(
            new AsyncHandler<String>() {
                private ByteArrayOutputStream bytes = new ByteArrayOutputStream();
                @Override
                public STATE onBodyPartReceived(
                        HttpResponseBodyPart bodyPart) throws Exception {
                     String data = new String(bodyPart.getBodyPartBytes());
                     System.out.println("My Message : ---------------------------- >" + data);                  
                    return STATE.CONTINUE;
                }

            });
    f.get();
}

我尝试累积邮件正文部分,但这需要服务器大小中的单独逻辑才能知道邮件结束。

谢谢,

拉​​维

1 个答案:

答案 0 :(得分:0)

AsyncHttpClient中的缓冲区大小不是问题,而是您的响应如何通过网络分割成TCP帧。如果您不想控制每个块但已准备好将它们缓冲在内存中并且只能处理整个正文,请使用AsyncCompletionHandler而不是低级AsyncHandler。< / p>