public async Task <Container> GetContainerAsync(IDocumentDbSettings settings)
        {
            var key = settings.DocumentDbRepositoryEndpointUrl + settings.DocumentDbRepositoryDatabaseId;

            if (_containers.ContainsKey(key))
            {
                return(_containers[key]);
            }

            lock (_containers)
            {
                if (_containers.ContainsKey(key))
                {
                    return(_containers[key]);
                }

                _logger.Debug(Common.LoggerContext, "Creating DocumentDb Client for {0}", settings.DocumentDbRepositoryEndpointUrl);
                settings.CosmosClientOptions.RequestTimeout = new TimeSpan();
                var client    = new CosmosClient(settings.DocumentDbRepositoryEndpointUrl, settings.DocumentDbRepositoryAuthKey, settings.CosmosClientOptions);
                var database  = client.GetDatabase(settings.DocumentDbRepositoryDatabaseId);
                var container = database.GetContainer(settings.DocumentDbRepositoryCollectionId);

                _containers[key] = container;
                return(_containers[key]);
            }
        }
 public DocumentDbWritableReadModelRepository(
     IDocumentDbSettings settings,
     IReliableReadWriteDocumentClientFactory containerFactory,
     ILogger logger,
     ITelemetryLogger telemetryLogger)
     : base(settings, containerFactory, logger, telemetryLogger)
 {
     _telemetryLogger = telemetryLogger;
 }
コード例 #3
0
 public DocumentDbReadModelRepository(
     IDocumentDbSettings settings,
     IReliableReadWriteDocumentClientFactory clientFactory,
     Core.ILogger logger,
     ITelemetryLogger telemetryLogger)
 {
     Settings         = settings;
     ClientFactory    = clientFactory;
     Logger           = logger ?? throw new ArgumentNullException(nameof(logger));
     _telemetryLogger = telemetryLogger;
 }
コード例 #4
0
        public async Task <DocumentClient> GetClientAsync(IDocumentDbSettings settings)
        {
            var key = settings.DocumentDbRepositoryEndpointUrl + settings.DocumentDbRepositoryDatabaseId;

            if (!_clients.ContainsKey(key))
            {
                _logger.Debug(Common.LoggerContext, "Creating DocumentDb Client for {0}", settings.DocumentDbRepositoryEndpointUrl);

                var connectionPolicy = new ConnectionPolicy();
                if (settings.DocumentDbRepositoryEndpointUrl.StartsWith("https://localhost"))
                {
                    connectionPolicy.EnableEndpointDiscovery = false;
                }
                var client = new DocumentClient(new Uri(settings.DocumentDbRepositoryEndpointUrl), settings.DocumentDbRepositoryAuthKey, connectionPolicy);
                await client.OpenAsync();

                await SpinUpDatabaseAsync(client, settings.DocumentDbRepositoryDatabaseId);

                _clients[key] = client;
                return(client);
            }
            return(_clients[key]);
        }
コード例 #5
0
 public DocumentDbViewModelRepository(IDocumentDbSettings settings, IDocumentDbClientFactory clientFactory, ILogger logger)
 {
     _settings      = settings;
     _clientFactory = clientFactory;
     _logger        = logger;
 }
 public DocumentDbWritableViewModelRepository(IDocumentDbSettings settings, IDocumentDbClientFactory clientFactory, ILogger logger)
     : base(settings, clientFactory, logger)
 {
 }