org.apache.solr.client.solrj.impl

## Class ConcurrentUpdateSolrClient

- java.lang.Object
- - org.apache.solr.client.solrj.SolrClient
  - - org.apache.solr.client.solrj.impl.ConcurrentUpdateSolrClient

All Implemented Interfaces:
  Closeable, Serializable, AutoCloseable

    public class ConcurrentUpdateSolrClient
    extends SolrClient

ConcurrentUpdateSolrClient buffers all added documents and writes them into open HTTP connections. This class is thread safe. Params from `UpdateRequest` are converted to http request parameters. When params change between UpdateRequests a new HTTP request is started. Although any SolrClient request can be made with this implementation, it is only recommended to use ConcurrentUpdateSolrClient with /update requests. The class `HttpSolrClient` is better suited for the query interface.

See Also:
  Serialized Form

### Nested Class Summary

Nested Classes
`static class` `ConcurrentUpdateSolrClient.Builder` Constructs `ConcurrentUpdateSolrClient` instances from provided configuration.

### Constructor Summary

Constructors
`protected` `ConcurrentUpdateSolrClient(ConcurrentUpdateSolrClient.Builder builder)`
`protected` `ConcurrentUpdateSolrClient(String solrServerUrl, org.apache.http.client.HttpClient client, int queueSize, int threadCount, ExecutorService es, boolean streamDeletes)` Deprecated. use `ConcurrentUpdateSolrClient(Builder)` instead, as it is a more extension/subclassing-friendly alternative

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`void` `blockUntilFinished()`
`void` `close()`
`Set<String>` `getQueryParams()`
`void` `handleError(Throwable ex)`
`void` `onSuccess(org.apache.http.HttpResponse resp)` Intended to be used as an extension point for doing post processing after a request completes.
`NamedList<Object>` `request(SolrRequest request, String collection)` Execute a request against a Solr server for a given collection
`void` `setConnectionTimeout(int timeout)` Deprecated. since 7.0 Use `ConcurrentUpdateSolrClient.Builder` methods instead.
`void` `setParser(ResponseParser responseParser)`
`void` `setPollQueueTime(int pollQueueTime)`
`void` `setQueryParams(Set<String> queryParams)` Expert Method.
`void` `setRequestWriter(RequestWriter requestWriter)`
`void` `setSoTimeout(int timeout)` Deprecated. since 7.0 Use `ConcurrentUpdateSolrClient.Builder` methods instead.
`void` `shutdownNow()`

### Methods inherited from class org.apache.solr.client.solrj.SolrClient

`add, add, add, add, add, add, add, add, add, add, addBean, addBean, addBean, addBean, addBeans, addBeans, addBeans, addBeans, addBeans, addBeans, commit, commit, commit, commit, commit, commit, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteByQuery, deleteByQuery, deleteByQuery, deleteByQuery, getBinder, getById, getById, getById, getById, getById, getById, getById, getById, optimize, optimize, optimize, optimize, optimize, optimize, ping, query, query, query, query, queryAndStreamResponse, queryAndStreamResponse, queryAndStreamResponse, request, rollback, rollback`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ConcurrentUpdateSolrClient

    @Deprecated
    protected ConcurrentUpdateSolrClient(String solrServerUrl,
                                                     org.apache.http.client.HttpClient client,
                                                     int queueSize,
                                                     int threadCount,
                                                     ExecutorService es,
                                                     boolean streamDeletes)

Deprecated. use `ConcurrentUpdateSolrClient(Builder)` instead, as it is a more extension/subclassing-friendly alternative
Uses the supplied HttpClient to send documents to the Solr server.

#### ConcurrentUpdateSolrClient

    protected ConcurrentUpdateSolrClient(ConcurrentUpdateSolrClient.Builder builder)

### Method Detail

#### getQueryParams

    public Set<String> getQueryParams()

#### setQueryParams

    public void setQueryParams(Set<String> queryParams)

Expert Method.

Parameters:
  `queryParams` - set of param keys to only send via the query string

#### request

    public NamedList<Object> request(SolrRequest request,
                                     String collection)
                              throws SolrServerException,
                                     IOException

Description copied from class: `SolrClient`
Execute a request against a Solr server for a given collection

Specified by:
  `request` in class `SolrClient`
Parameters:
  `request` - the request to execute
  `collection` - the collection to execute the request against
Returns:
  a `NamedList` containing the response from the server
Throws:
  `SolrServerException` - if there is an error on the server
  `IOException` - If there is a low-level I/O error.

#### blockUntilFinished

    public void blockUntilFinished()

#### handleError

    public void handleError(Throwable ex)

#### onSuccess

    public void onSuccess(org.apache.http.HttpResponse resp)

Intended to be used as an extension point for doing post processing after a request completes.

#### close

    public void close()

#### setConnectionTimeout

    @Deprecated
    public void setConnectionTimeout(int timeout)

Deprecated. since 7.0 Use `ConcurrentUpdateSolrClient.Builder` methods instead.

#### setSoTimeout

    @Deprecated
    public void setSoTimeout(int timeout)

Deprecated. since 7.0 Use `ConcurrentUpdateSolrClient.Builder` methods instead.
set soTimeout (read timeout) on the underlying HttpConnectionManager. This is desirable for queries, but probably not for indexing.

#### shutdownNow

    public void shutdownNow()

#### setParser

    public void setParser(ResponseParser responseParser)

#### setPollQueueTime

    public void setPollQueueTime(int pollQueueTime)

Parameters:
  `pollQueueTime` - time for an open connection to wait for updates when the queue is empty.

#### setRequestWriter

    public void setRequestWriter(RequestWriter requestWriter)