Estoy trabajando a través del example Netty HTTP Client code para realizar solicitudes http dentro de un entorno concurrente y enhebrado.HTTP muy concurrente con Netty y NIO
Sin embargo, mi sistema se rompe por completo (con una serie de excepciones) a un rendimiento bastante bajo.
En casi pseudo-código:
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);
En el ejemplo, para hacer una solicitud creo un ClientBootstrap, y desde allí (a través de unos aros) un canal para escribir el HTTPRequest.
Todo esto funciona y es bueno.
Sin embargo, en una situación concurrente, ¿cada solicitud debe pasar por los mismos aros? Creo que eso es lo que está rompiendo las cosas para mí en este momento. ¿Debo volver a utilizar la conexión o estructurar a mi cliente de una manera completamente diferente?
También: Estoy haciendo esto en Clojure, si eso hace alguna diferencia.
tal vez debería usar https://github.com/ztellman/aleph? – PheliX
¿Tiene experiencia con aleph? He intentado con otro cliente http async clojure, pero no funciona a los niveles de rendimiento que necesito mantener. –