c# – SolrNet连接的说明
作者:互联网
为什么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>>();
}
}
解决方法:
>作为explained in the wiki,内置容器(Startup)目前仅限于访问具有不同映射类型的多个核心/实例.如果您想要更灵活,可以切换到Windsor / StructureMap / Autofac或help implement this
feature.
>如您所发现的,内置容器中的注册可能不是线程安全的,但是通过在不同的线程中注册/初始化SolrNet,您无法获得任何好处.只需将所有初始化移动到单个线程,当您执行线程安全的solr.Query(…)或solr.Add(…)时,执行实际繁重的工作.
标签:c,solrnet 来源: https://codeday.me/bug/20190521/1147989.html