On 8/23/2015 7:46 AM, Ashish Mukherjee wrote: > I want to run few Solr queries in parallel, which are being done in a > multi-threaded model now. I was wondering if there are any client libraries > to query Solr through a non-blocking I/O mechanism instead of a threaded > model. Has anyone attempted something like this?
The only client library that the Solr project makes is SolrJ -- the client for Java. If you are not using the SolrJ client, then the Solr project did not write it, and you should contact the authors of the library directly. SolrJ and Solr are both completely thread-safe, and multiple threads are recommended for highly concurrent usage. SolrJ uses HttpClient for communication with Solr. I was not able to determine whether the default httpclient settings will result in non-blocking I/O or not. As far as I am aware, nothing in SolrJ sets any explicit configuration for blocking or non-blocking I/O. You can create your own HttpClient object in a SolrJ program and have the SolrClient object use it. HttpClient uses HttpCore. Here is the main web page for these components: https://hc.apache.org/ On this webpage, it says "HttpCore supports two I/O models: blocking I/O model based on the classic Java I/O and non-blocking, event driven I/O model based on Java NIO." There is no information here about which model is chosen by default. Thanks, Shawn