在Web应用程序中的多个线程之间共享单个HttpSolrServer是否安全?推荐吗?
每次构建一个新实例是否昂贵?在我的机器上大约需要10毫秒。
最佳答案
查看HttpSolrServer
的来源后的一些观察结果(位于grepcode)
没有将特定于请求的数据保留为类变量。因此,只要所有配置参数(如基本URL,连接超时等)都没有被任何线程修改,则HttpSolrServer
的实例可以在多线程环境中安全使用。HttpSolrServer
在内部使用类ThreadSafeClientConnManager
来管理内部http客户端连接上的线程安全(它使用Apache HTTP Client 4.x连接到solr)。这样可以确保与Solr服务器通信时没有线程安全问题。