RxNetty (Reactive Extension Adaptor for Netty) es una pequeña librería Java que sobre Netty ofrece un enfoque reactiva para la programación de clientes y servidores HTTP.

La mejor forma de ver lo que ofrece es revisar uno de sus ejemplos.

import io.netty.buffer.ByteBuf;

import io.netty.handler.codec.http.HttpResponseStatus;

import io.reactivex.netty.RxNetty;

import io.reactivex.netty.protocol.http.server.HttpServer;

import java.nio.charset.Charset;

public final class RxNettyExample {

public static void main(String… args) throws InterruptedException {

HttpServer<ByteBuf, ByteBuf> server = RxNetty.createHttpServer(8080, (request, response) -> {

System.out.println("Server => Request: " + request.getPath());

try {

if ("/error".equals(request.getPath())) {

throw new RuntimeException("forced error");

}

response.setStatus(HttpResponseStatus.OK);

response.writeString("Path Requested =>: " + request.getPath() + ‘n’);

return response.close();

} catch (Throwable e) {

System.err.println("Server => Error [" + request.getPath()
+
"] => " + e);

response.setStatus(HttpResponseStatus.BAD_REQUEST);

response.writeString("Error 500: Bad Requestn");

return response.close();

}

});

server.start();

RxNetty.createHttpGet("http://localhost:8080/")

.flatMap(response -> response.getContent())

.map(data -> "Client => " + data.toString(Charset.defaultCharset()))

.toBlocking().forEach(System.out::println);

RxNetty.createHttpGet("http://localhost:8080/error")

.flatMap(response -> response.getContent())

.map(data -> "Client => " + data.toString(Charset.defaultCharset()))

.toBlocking().forEach(System.out::println);

RxNetty.createHttpGet("http://localhost:8080/data")

.flatMap(response -> response.getContent())

.map(data -> "Client => " + data.toString(Charset.defaultCharset()))

.toBlocking().forEach(System.out::println);

server.shutdown();

}

}

En el ejemplo de arriba podemos ver lo sencillo que es crear un servidor HTTP y la forma de invocarlo.

Para usarlo basta con incluir la dependencia:

(podéis encontrarlo aquí: http://search.maven.org/#search%7Cga%7C1%7Cio.reactivex.rxnetty)

Podemos encontrar muchos más Ejemplo de clients y servidores usando RxNetty en ejemplos