Thanks Bill ..
I've changed code as below i.e Wrapped BlockingHandler .. Is this Correct Implementation ?
public class HelloWorldServer {
public static void main(final String[] args) {
Undertow server = Undertow.builder().addHttpListener(8009, "localhost").setHandler( new BlockingHandler( new HttpHandler() {
@Override
public void handleRequest(final HttpServerExchange exchange) throws Exception {
if (exchange.getRequestMethod().equals(Methods.POST)) {
BufferedReader reader = null;
StringBuilder builder = new StringBuilder();
try {
exchange.startBlocking();
reader = new BufferedReader(new InputStreamReader(exchange.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
String body = builder.toString();
System.out.println("Req Body ==> " + body);
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
exchange.getResponseSender().send("SUCCESS");
} else {
exchange.getResponseHeaders().put(Headers.CONTENT_TYPE, "text/plain");
exchange.getResponseSender().send("FAILURE");
}
}
})).build();
server.start();
}
}
Without using Kafka API here , i still see only ~50K per sec..
100 threads and 1000 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 20.48ms 11.98ms 328.07ms 91.59%
Req/Sec 510.03 104.80 4.63k 91.33%
Latency Distribution
50% 18.23ms
75% 20.48ms
90% 24.35ms
99% 69.33ms
3014791 requests in 1.00m, 379.52MB read
Requests/sec: 50163.73
Transfer/sec: 6.31MB