我正在通过example Netty HTTP Client code工作,以便在并发的线程环境中发出http请求。高并发HTTP与Netty和NIO
但是,我的系统在吞吐量相当低的情况下完全中断(有大量例外)。
几乎在伪代码:
ClientBootstrap bootstrap = new ClientBootstrap(new NioClientSocketChannelFactory())
bootstrap.setPipelineFactory(new HttpClientPipelineFactory());
ChannelFuture future = bootstrap.connect(new InetSocketAddress(host, port));
Channel channel = future.awaitUninterruptibly().getChannel();
HttpRequest request = new DefaultHttpRequest();
channel.write(request);
在这个例子中,使我创造一个ClientBootstrap的请求,并从那里(通过几个铁圈)频道写的HTTPRequest。
这一切工作,并很好。
但是,在一个并发的情况下,是否每个请求都应该经历相同的箍?我认为那是目前对我而言的事情。我应该以完全不同的方式重用连接或构建我的客户吗?
另外:我在Clojure做这个,如果这样做有什么区别的话。
也许你应该使用https://github.com/ztellman/aleph? – PheliX 2011-03-28 12:35:21
你有aleph的经验吗?我尝试了另一个异步clojure http客户端,但它不能在我需要维持的吞吐量级别上工作。 – 2011-03-29 02:53:07