Elasticsearch(三)【.Net客户端API规范--生命周期】
来源:互联网 发布:网络棋牌赌博平台 编辑:程序博客网 时间:2024/06/08 15:35
生命周期
如果您使用的是IOC容器,那么它总是有助于了解您的对象生命周期中的最佳实践
一般来说,我们建议人们将ElasticClient实例注册为单例模式。客户端是线程安全的,所以在线程之间共享一个实例是很好的。
然而,放大实际的移动部分,在应用程序的大部分时间内受益最大的是ConnectionSettings;缓存是每个ConnectionSettings。
在某些应用程序中,使用不同的连接设置注册多个单例ElasticClient可能是完美的。例如,如果您有2个功能独立的Elasticsearch集群。
重要
由于Elasticsearch.Net和NEST的语义版本以及它们与Elasticsearch版本的对齐,所有连接到ElasticClient和Elasticsearch集群的实例必须位于相同的主要版本上,即不可以同时使用ElasticClient来连接与前者相同的应用程序中的ElasticClient 1.x和2.x将需要NEST 1.x,后者为NEST 2.x。
我们来演示通过创建我们自己的派生的ConnectionSettings,IConnectionPool和IConnection类型来处理哪些组件
class AConnectionSettings : ConnectionSettings{ public AConnectionSettings(IConnectionPool pool, IConnection connection) : base(pool, connection) { } public bool IsDisposed { get; private set; } protected override void DisposeManagedResources() { this.IsDisposed = true; base.DisposeManagedResources(); }}class AConnectionPool : SingleNodeConnectionPool{ public AConnectionPool(Uri uri, IDateTimeProvider dateTimeProvider = null) : base(uri, dateTimeProvider) { } public bool IsDisposed { get; private set; } protected override void DisposeManagedResources() { this.IsDisposed = true; base.DisposeManagedResources(); }}class AConnection : InMemoryConnection{ public bool IsDisposed { get; private set; } protected override void DisposeManagedResources() { this.IsDisposed = true; base.DisposeManagedResources(); }}
ConnectionSettings,IConnectionPool和IConnection都可以实现IDisposable
var connection = new AConnection();var connectionPool = new AConnectionPool(new Uri("http://localhost:9200"));var settings = new AConnectionSettings(connectionPool, connection);settings.IsDisposed.Should().BeFalse();connectionPool.IsDisposed.Should().BeFalse();connection.IsDisposed.Should().BeFalse();
处理ConnectionSettings也会处理它使用的IConnectionPool和IConnection
var connection = new AConnection();var connectionPool = new AConnectionPool(new Uri("http://localhost:9200"));var settings = new AConnectionSettings(connectionPool, connection);settings.IsDisposed.Should().BeTrue();connectionPool.IsDisposed.Should().BeTrue();connection.IsDisposed.Should().BeTrue();
0 0
- Elasticsearch(三)【.Net客户端API规范--生命周期】
- Elasticsearch(十二)【NEST高级客户端--规范】
- ElasticSearch——.NET客户端
- Elasticsearch(一)【.Net客户端介绍】
- elasticsearch学习总结——API 规范
- ElasticSearch的JAVA 客户端(JAVA API)
- elasticsearch java客户端api使用(一)
- elasticsearch java客户端api使用(二)
- Elasticsearch 5.X Java API 创建客户端
- elasticsearch java api——客户端 org.elasticsearch.client
- elasticsearch源码分析之客户端(三)
- elasticsearch源码分析之客户端(三)
- ElasticSearch 菜鸟笔记(三)ElasticSearch 常见REST API 操作
- Elasticsearch 5.x (三) Elasticsearch REST API
- ElasticSearch Java Api(三) -更新索引库
- ElasticSearch Java Api(三) -更新索引库
- ElasticSearch Java Api(三) -更新索引库
- ElasticSearch Java Api(三) -更新索引库
- 枚举
- docker mysql utf8mb4 编码问题解决方法
- Linux之groupdel和userdel
- vector—— String Manipulation 1.0
- L1-009. N个数求和
- Elasticsearch(三)【.Net客户端API规范--生命周期】
- C++:面向行的类成员函数
- pwd命令
- HTML5中的Range对象的研究
- synchronized二三事1
- Python_08
- Java初认识
- Android插件—Android Drawable Importer
- linux 中大部分命令是如何工作的