Async (NIO) request processing support in RESTEasy ClientHttpEngine
Overview
This is about providing an asynch version of the ClientHttpEngine abstraction within RESTEasy, to have non-blocking behavior on client side basically down up to the socket. A default implementation based on Apache HttpComponents HttpAsyncClient is also implemented. Further details and usage examples in the RESTEasy documentation: * http://docs.jboss.org/resteasy/docs/3.5.0.Final/userguide/html/RESTEasy_Client_Framework.html#transport_layer * http://docs.jboss.org/resteasy/docs/3.5.0.Final/userguide/html/RESTEasy_Client_Framework.html#apache_asynch
Issue Metadata
Issue:
Related Issues:
Dev Contacts:
QE Contacts:
Affected Projects or Components:
-
WildFly
-
RESTEasy
Requirements
-
The default implementation of the asynch client engine interface will be backed by an Apache HttpComponents HttpAsyncClient based component
-
The new client engine will be off by default and enabled on demand with ResteasyClientBuilder’s useAsyncHttpEngine() method; the user will evaluate which engine best fits his usage scenario.
Test Plan
Besides for basic checks in the RESTEasy testsuite, like common JAX-RS client usage scenario, we might want to run some meaningful performance test to actually get numbers on the advantages when running in scenarios usually well served by a NIO model.
Community Documentation
See links in the overview section.