CosmosDBV3ClientSingleton.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Microsoft.Azure.Cosmos;
  2. using Microsoft.Azure.Cosmos.Fluent;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Text;
  6. namespace TEAMModelOS.SDK.Module.AzureCosmosDBV3
  7. {
  8. public class CosmosDBV3ClientSingleton
  9. {
  10. private static string _connectionUrl;
  11. private static string _connectionKey;
  12. private CosmosClient CosmosClient;
  13. private CosmosDBV3ClientSingleton() { }
  14. public CosmosClient GetCosmosDBClient()
  15. {
  16. if (CosmosClient != null)
  17. {
  18. return CosmosClient;
  19. }
  20. else
  21. {
  22. getInstance(_connectionUrl, _connectionKey);
  23. return CosmosClient;
  24. }
  25. }
  26. public static CosmosDBV3ClientSingleton getInstance(string connectionUrl, string connectionKey)
  27. {
  28. _connectionUrl = connectionUrl;
  29. _connectionKey = connectionKey;
  30. return SingletonInstance.instance;
  31. }
  32. private static class SingletonInstance
  33. {
  34. public static CosmosDBV3ClientSingleton instance = new CosmosDBV3ClientSingleton()
  35. {
  36. // CosmosClient =new CosmosClient(_connectionUrl, _connectionKey, new CosmosClientOptions() { AllowBulkExecution = true } )
  37. CosmosClient = new CosmosClientBuilder(_connectionUrl, _connectionKey).
  38. WithBulkExecution(true).WithConnectionModeDirect().
  39. //WithConnectionModeDirect().
  40. WithCustomSerializer(new SystemTextJsonCosmosSerializer(new System.Text.Json.JsonSerializerOptions()))
  41. .Build()
  42. //CosmosClient = new CosmosClient(_connectionUrl, _connectionKey)
  43. };
  44. //private static readonly ConnectionPolicy ConnectionPolicy = new ConnectionPolicy
  45. //{
  46. // ConnectionMode = ConnectionMode.Direct,
  47. // ConnectionProtocol = Protocol.Tcp
  48. //};
  49. }
  50. }
  51. }