async Task RunAsync()
        {
            this.cosmosDBProducerConfiguration = new ConfigurationBuilder()
                                                 .AddJsonFile("cosmosProducerSettings.json")
                                                 .Build();
            this.consumerRouterConfiguration = new ConfigurationBuilder()
                                               .AddJsonFile("consumerRouterSettings.json")
                                               .Build();

            this.cosmosDBProducerSettings     = ConfigHelper.LoadCosmosProducerSettings(this.cosmosDBProducerConfiguration);
            this.cosmosConsumerRouterSettings = ConfigHelper.LoadCosmosConsumerRouterSettings(this.consumerRouterConfiguration);

            if (this.cosmosConsumerRouterSettings.Host.ToLower() == "kafka")
            {
                this.InitKafkaConsumer();
            }
            else if (this.cosmosConsumerRouterSettings.Host.ToLower() == "cosmos")
            {
                await InitCosmosDBConsumerAsync();
            }
            else
            {
                throw new Exception($"Unsupported host: {this.cosmosConsumerRouterSettings.Host}");
            }

            this.eventsReader = new CosmosDBEventsReader(cosmosDBProducerSettings);
            await eventsReader.StartAsync(HandleChangesAsync);
        }
 private async Task InitCosmosDBConsumerAsync()
 {
     this.cosmosDBConsumerConfiguration = new ConfigurationBuilder()
                                          .AddJsonFile("cosmosConsumerSettings.json")
                                          .Build();
     this.cosmosDBConsumerSettings = ConfigHelper.LoadCosmosConsumerSettings(this.cosmosDBConsumerConfiguration);
     this.eventsWriter             = new CosmosDBEventsWriter(cosmosDBConsumerSettings);
     await this.eventsWriter.InitClientsAsync();
 }
        private static void RegisterCosmosDbClient()
        {
            var endpoint    = Environment.GetEnvironmentVariable("CosmosdbHang-endpoint");
            var key         = Environment.GetEnvironmentVariable("CosmosdbHang-key");
            var databaseId  = Environment.GetEnvironmentVariable("CosmosdbHang-databaseId");
            var containerId = Environment.GetEnvironmentVariable("CosmosdbHang-containerId");
            var region      = Environment.GetEnvironmentVariable("CosmosdbHang-region");
            var directMode  = true;

            var settings = new CosmosDBSettings(endpoint, key, databaseId, containerId, region, directMode);

            ServiceLocator.Repository = new CosmosDbRepository(settings);
        }