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