单例对象中的多个 Elasticsearch 连接在控制器中获取一个特定的单例弹性搜索 class
Multiple Elasticsearch connection in singleton object Getting one specific Singleton elastic search in controller class
将 AcqClient 和 NcClient 传递到同一接口
//AcqClient和NcClient是静态只读变量
public static void Connection(){
AcqClient = new ElasticClient(AcqConnection);
NcClient= new ElasticClient(NcConnection);
创建单例对象
services.AddSingleton<IElasticClient>(AcqClient);
services.AddSingleton<IElasticClient>(NcClient);
}
在 Startup.cs
中实施
service.Connection(configuration)
在我的控制器上class当我这样做时我得到了最后一个对象
public class controller:Controller{
public controller(IElasticClient elasticclient){
_elasticclient=elasticlient;
}
}
我这样做过
IServiceCollection 委托
public delegate IServiceCollection ServiceResolver(string key);
创建弹性搜索单例对象
var firstobject = new ElasticClient(firstconnection);
var secondobject= new ElasticClient(secondconnection);
正在使用 ServiceResolver 创建对象
services.AddTransient<ServiceResolver>(serviceProvider => key =>
{
if (key== "A")
{
services.AddSingleton<IElasticClient>(firstobject);
}
else if (key == "N")
{
services.AddSingleton<IElasticClient>(secondobject);
}
return services;
});
在ElasticSearch的一个控制器不同节点连接
private static IElasticClient _elasticClient;
private readonly IServiceCollection _aService;
public static string clsName = "ElasticRandDController";
public FirstConstructor(ServiceResolver serviceAccessor)
{
_aService = serviceAccessor("N");
var serviceProvider = _aService.BuildServiceProvider();
_elasticClient = serviceProvider.GetService<IElasticClient>();
}
在其他控制器中
private static IElasticClient _elasticClient;
private readonly IServiceCollection _aService;
public SecondConstructor(ServiceResolver serviceAccessor)
{
_aService = serviceAccessor("A");
var serviceProvider = _aService.BuildServiceProvider();
_elasticClient = serviceProvider.GetService<IElasticClient>();
}
将 AcqClient 和 NcClient 传递到同一接口
//AcqClient和NcClient是静态只读变量
public static void Connection(){
AcqClient = new ElasticClient(AcqConnection);
NcClient= new ElasticClient(NcConnection);
创建单例对象
services.AddSingleton<IElasticClient>(AcqClient);
services.AddSingleton<IElasticClient>(NcClient);
}
在 Startup.cs
中实施 service.Connection(configuration)
在我的控制器上class当我这样做时我得到了最后一个对象
public class controller:Controller{
public controller(IElasticClient elasticclient){
_elasticclient=elasticlient;
}
}
我这样做过
IServiceCollection 委托
public delegate IServiceCollection ServiceResolver(string key);
创建弹性搜索单例对象
var firstobject = new ElasticClient(firstconnection);
var secondobject= new ElasticClient(secondconnection);
正在使用 ServiceResolver 创建对象
services.AddTransient<ServiceResolver>(serviceProvider => key =>
{
if (key== "A")
{
services.AddSingleton<IElasticClient>(firstobject);
}
else if (key == "N")
{
services.AddSingleton<IElasticClient>(secondobject);
}
return services;
});
在ElasticSearch的一个控制器不同节点连接
private static IElasticClient _elasticClient;
private readonly IServiceCollection _aService;
public static string clsName = "ElasticRandDController";
public FirstConstructor(ServiceResolver serviceAccessor)
{
_aService = serviceAccessor("N");
var serviceProvider = _aService.BuildServiceProvider();
_elasticClient = serviceProvider.GetService<IElasticClient>();
}
在其他控制器中
private static IElasticClient _elasticClient;
private readonly IServiceCollection _aService;
public SecondConstructor(ServiceResolver serviceAccessor)
{
_aService = serviceAccessor("A");
var serviceProvider = _aService.BuildServiceProvider();
_elasticClient = serviceProvider.GetService<IElasticClient>();
}