123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- using Microsoft.Azure.Cosmos;
- using Microsoft.Azure.Cosmos.Fluent;
- using System;
- using System.Collections.Generic;
- using System.Text;
- namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
- {
- public class CosmosDBV3ClientSingleton
- {
- private static string _connectionUrl;
- private static string _connectionKey;
- private static CosmosSerializer _cosmosSerializer;
- private CosmosClient CosmosClient;
- private CosmosDBV3ClientSingleton() { }
- public CosmosClient GetCosmosDBClient()
- {
- if (CosmosClient != null)
- {
- return CosmosClient;
- }
- else
- {
- getInstance(_connectionUrl, _connectionKey, _cosmosSerializer);
- return CosmosClient;
- }
- }
- public static CosmosDBV3ClientSingleton getInstance(string connectionUrl, string connectionKey, CosmosSerializer cosmosSerializer)
- {
- _connectionUrl = connectionUrl;
- _connectionKey = connectionKey;
- _cosmosSerializer = cosmosSerializer;
- if (cosmosSerializer != null && cosmosSerializer.GetType() == typeof(SystemTextJsonCosmosSerializer))
- {
- return SingletonCustomInstance.instance;
- }
- return SingletonInstance.instance;
- }
- private static class SingletonInstance
- {
- public static CosmosDBV3ClientSingleton instance = new CosmosDBV3ClientSingleton()
- {
- // CosmosClient =new CosmosClient(_connectionUrl, _connectionKey, new CosmosClientOptions() { AllowBulkExecution = true } )
- CosmosClient = new CosmosClientBuilder(_connectionUrl, _connectionKey).
- WithBulkExecution(true).WithConnectionModeDirect()
- //WithConnectionModeDirect().
- .Build()
- //CosmosClient = new CosmosClient(_connectionUrl, _connectionKey)
- };
- //private static readonly ConnectionPolicy ConnectionPolicy = new ConnectionPolicy
- //{
- // ConnectionMode = ConnectionMode.Direct,
- // ConnectionProtocol = Protocol.Tcp
- //};
- }
- private static class SingletonCustomInstance
- {
- public static CosmosDBV3ClientSingleton instance = new CosmosDBV3ClientSingleton()
- {
- // CosmosClient =new CosmosClient(_connectionUrl, _connectionKey, new CosmosClientOptions() { AllowBulkExecution = true } )
- CosmosClient = new CosmosClientBuilder(_connectionUrl, _connectionKey).
- WithBulkExecution(true).WithConnectionModeDirect().
- //WithConnectionModeDirect().
- WithCustomSerializer(_cosmosSerializer).WithThrottlingRetryOptions(TimeSpan.FromSeconds(60),50)
- .Build()
- //CosmosClient = new CosmosClient(_connectionUrl, _connectionKey)
- };
- //private static readonly ConnectionPolicy ConnectionPolicy = new ConnectionPolicy
- //{
- // ConnectionMode = ConnectionMode.Direct,
- // ConnectionProtocol = Protocol.Tcp
- //};
- }
- }
- }
|