【发布时间】:2011-08-12 13:44:47
【问题描述】:
我只是将一些代码从 .net 移植到 Java。我一直在使用 AsyncHttpClient (https://github.com/sonatype/async-http-client) 库和 Netty 提供程序。
做了一些测试,我惊讶地发现在执行调用期间,例如:
httpClient.prepareGet("http://bbc.co.uk").execute(
new AsyncCompletionHandler<Response>() { ... });
NettyAsyncHttpProvider 执行引导连接到站点,即:
bootstrap.connect(new InetSocketAddress(
AsyncHttpProviderUtils.getHost(uri),
AsyncHttpProviderUtils.getPort(uri)));
编辑:澄清 NettyAsyncHttpProvider 类是 AsyncHttpClient 库的一部分。它与 Netty 本身无关。
这意味着在 bbc 网站(在我的低连接上)执行完成大约需要 300 毫秒(然后异步接收/完成几乎立即发生)。这真的会破坏我试图启动多个异步调用的调度程序的性能。当每次调用都针对同一个域时,它运行良好。在我的情况下,我有数百个不同的域,因此每次调用都会在建立连接时产生初始延迟,这会降低调度程序的吞吐量。
谁能就如何使用这个库提供任何建议,使其真正以异步方式或替代库工作?
谢谢, 保罗
【问题讨论】:
标签: java http asynchronous