using Apache.IoTDB.DataStructure; using Apache.IoTDB; using JiShe.CollectBus.IoTDBProvider.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Extensions.Logging; namespace JiShe.CollectBus.IoTDBProvider.Provider { /// /// 表模型Session连接池 /// public class TableSessionPoolAdapter : IIoTDBSessionPool { private readonly TableSessionPool _sessionPool; private readonly IoTDBOptions _options; public TableSessionPoolAdapter(IoTDBOptions options) { _options = options; _sessionPool = new TableSessionPool.Builder() .SetNodeUrls(options.ClusterList) .SetUsername(options.UserName) .SetPassword(options.Password) .SetFetchSize(options.FetchSize) .SetPoolSize(options.PoolSize) .SetDatabase(options.DataBaseName) .Build(); } /// /// 打开连接池 /// /// public async Task OpenAsync() { await _sessionPool.Open(false); if (_options.OpenDebugMode) { _sessionPool.OpenDebugMode(builder => builder.AddConsole()); } } /// /// 批量插入 /// /// /// public async Task InsertAsync(Tablet tablet) { var result = await _sessionPool.InsertAsync(tablet); if (result != 0) { throw new Exception($"{nameof(TableSessionPoolAdapter)} "); } return result; } /// /// 查询数据 /// /// /// public async Task ExecuteQueryStatementAsync(string sql) { return await _sessionPool.ExecuteQueryStatementAsync(sql); } public void Dispose() { _sessionPool?.Close().ConfigureAwait(false).GetAwaiter().GetResult(); } } }