SolrNet连接解释
本文关键字:解释 连接 SolrNet | 更新日期: 2023-09-27 18:03:26
为什么SolrNet连接的容器保持静态?这是一个非常大的错误,因为在我们的应用程序中,当我们向应用程序发送异步请求时,SolrNet的行为异常。如何在SolrNet中避免这个问题?
class P
{
static void M(string[] a)
{
Thread t = new Thread(delegate()
{
f1();
});
Thread t1 = new Thread(delegate()
{
f2();
});
t.Start();
t1.Start();
t.Join();
t1.Join();
}
static void f1()
{
Startup.Init<Doc>(new SolrNet.Impl.SolrPostConnection("http://localhost:8983/solr3/"));
ISolrOperations<Doc> solrOperations2 = ServiceLocator.Current.GetInstance<ISolrOperations<Document>>();
}
static void f2()
{
Startup.Init<Doc>(new SolrNet.Impl.SolrPostConnection("http://localhost:8983/solr1/"));
ISolrOperations<Doc> solrOperations2 = ServiceLocator.Current.GetInstance<ISolrOperations<Document>>();
}
}
-
正如wiki中所解释的,内置容器(Startup)目前仅限于访问具有不同映射类型的多个内核/实例。如果你想要更多的灵活性,要么切换到Windsor/StructureMap/Autofac,要么帮助实现这一点特性。
-
内置容器中的注册可能不是线程安全的,但是在不同的线程中注册/初始化SolrNet没有任何好处。只需将所有初始化移到单个线程中,实际的繁重工作是在执行是线程安全的solr.Query(…)或solr.Add(…)时执行的。