コード例 #1
0
        public void Init()
        {
            ESTraceLogger.Debug($"AWS_S3CacheProvider Init: Starting");
            if (client == null)
            {
                lock (_lockconnections)
                {
                    if (connections.ContainsKey(this.AWS_S3Servers.First()))
                    {
                        client = connections[this.AWS_S3Servers.First()];
                    }
                    else
                    {
                        client = new AmazonS3Client(
                            this.AccessKey,
                            this.SecretKey,
                            new AmazonS3Config()
                        {
                            AuthenticationRegion = Region,                // Should match the `MINIO_REGION` environment variable.
                            ServiceURL           = AWS_S3Servers.First(), // replace http://localhost:9000 with URL of your MinIO server
                            ForcePathStyle       = true                   // MUST be true to work correctly with MinIO server
                        }
                            );
                        connections.Add(this.AWS_S3Servers.First(), client);

                        var buckList = client.ListBucketsAsync().Result;
                        if (buckList?.Buckets?.Any(m => m.BucketName == this.Bucket) == false)
                        {
                            ESTraceLogger.Debug($"AWS_S3CacheProvider Init: Bucket {this.AWS_S3Servers.First()} / {this.Bucket} doesn't exist. Creating new one");
                            try
                            {
                                var res = client.PutBucketAsync(this.Bucket).Result;
                            }
                            catch (Exception e)
                            {
                                ESTraceLogger.Fatal($"AWS_S3CacheProvider: Created db error {e.Message}", e);
                                throw new ApplicationException($"Cannot created AWS_S3  {this.AWS_S3Servers.First()} / {this.Bucket}");
                            }
                        }
                    }
                    ESTraceLogger.Debug($"AWS_S3CacheProvider Init: Bucket {this.AWS_S3Servers.First()} / {this.Bucket} is live.");
                    cleaning.Elapsed += Cleaning_Elapsed;
                    cleaning.Start();
                }
            }
        }
コード例 #2
0
        public void Init()
        {
            ESTraceLogger.Debug($"ElasticCacheProvider Init: Starting");
            if (client == null)
            {
                var pool = new Elasticsearch.Net.StaticConnectionPool(
                    this.ElasticServers
                    .Where(m => !string.IsNullOrWhiteSpace(m))
                    .Select(u => new Uri(u))
                    );
                var settings = new ConnectionSettings(pool)
                               .DefaultIndex(this.DBName)
                               .DisableAutomaticProxyDetection(false)
                               .RequestTimeout(TimeSpan.FromMilliseconds(60000))
                               .SniffLifeSpan(null)
                               .OnRequestCompleted(call =>
                {
                    // log out the request and the request body, if one exists for the type of request
                    if (call.RequestBodyInBytes != null)
                    {
                        ESTraceLogger.Debug($"{call.HttpMethod}\t{call.Uri}\t" +
                                            $"{Encoding.UTF8.GetString(call.RequestBodyInBytes)}");
                    }
                    else
                    {
                        ESTraceLogger.Debug($"{call.HttpMethod}\t{call.Uri}\t");
                    }
                })
                ;
                if (System.Diagnostics.Debugger.IsAttached || Devmasters.Config.GetWebConfigValue("ESDebugDataEnabled") == "true")
                {
                    settings = settings.DisableDirectStreaming();
                }

                client = new ElasticClient(settings);
                IndexSettings set = new IndexSettings();
                set.NumberOfReplicas = this.NumberOfReplicas;
                set.NumberOfShards   = this.NumberOfShards;
                IndexState idxSt = new IndexState();
                idxSt.Settings = set;

                ESTraceLogger.Debug($"ElasticCacheProvider Init: Check Elastic DB {client.ConnectionSettings.DefaultIndex}");
                var resExists = client.Indices.Exists(client.ConnectionSettings.DefaultIndex);
                //if (resExists.IsValid == false)
                //{
                //    ESTraceLogger.Fatal($"ElasticCacheProvider: Cannot check db existance {resExists.ServerError?.ToString()}", resExists.OriginalException);
                //    throw new ApplicationException("Cannot check Elastic DB");
                //}
                if (resExists.Exists == false)
                {
                    ESTraceLogger.Debug($"ElasticCacheProvider Init: DB {client.ConnectionSettings.DefaultIndex} doesn't exist. Creating new one");

                    var res = client.Indices.Create(client.ConnectionSettings.DefaultIndex,
                                                    i => i.InitializeUsing(idxSt)
                                                    .Map <Bag <T> >(map => map.AutoMap().DateDetection(false))
                                                    );
                    if (res.IsValid == false)
                    {
                        ESTraceLogger.Fatal($"ElasticCacheProvider: Created db error {res.ServerError?.ToString()}", res.OriginalException);
                        throw new ApplicationException("Cannot created Elastic DB");
                    }
                }
                ESTraceLogger.Debug($"ElasticCacheProvider Init: DB {client.ConnectionSettings.DefaultIndex} is live.");
                cleaning.Elapsed += Cleaning_Elapsed;
                cleaning.Start();
            }
        }