Minor note. I might have made this two classes. One `AsyncSolrIndexer` to put items into the queue and support the indexer interface, and another `AsyncSolrIndexerThread` to consume items from the queue.  The `AsyncSolrIndexer` could create the thread and pass it a reference to the queue. But this approach works as well.