HTTP с высокой степенью одновременности с Netty и NIO

Я работаю с примером кода Netty HTTP Client , чтобы выполнять HTTP-запросы в параллельной многопоточной среде.

Однако моя система полностью ломается (с множеством исключений) при довольно низкой пропускной способности.

Почти псевдокод:

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, если это вообще имеет значение.

8
задан skaffman 29 March 2011 в 14:45
поделиться