private async Task <Container> GetDestinationContainer(ConsumerRouterSettings consumerRouterSettings, string topic) { if (consumerRouterSettings.IsIndividualTopicsRoutingEnabled) { if (consumerRouterSettings.WhiteListedTopies.Contains(topic)) { // Route these to specific container // Make sure topic container exists if (!CosmosClientPool.IsTopicExists(topic)) { Database database = CosmosClientPool.GetCosmosClient(this.cosmosDBSettings.Consumer).GetDatabase(this.cosmosDBSettings.Consumer.Database); // Create a new container in the same database. Container container = await CosmosExtension.SetupCollectionAsync(database, topic, this.cosmosDBSettings.Consumer.PartitionKeyPath, this.cosmosDBSettings.Consumer.CreateIfContainerNotExists, this.cosmosDBSettings.Consumer.DeleteIfContainerExists); CosmosClientPool.AddTopic(topic); return(container); } return(CosmosClientPool.GetCosmosClient(this.cosmosDBSettings.Consumer).GetContainer(this.cosmosDBSettings.Consumer.Database, topic)); } } // Default container return(CosmosClientPool.GetCosmosClient(this.cosmosDBSettings.Consumer).GetContainer(this.cosmosDBSettings.Consumer.Database, this.cosmosDBSettings.Consumer.Container)); }
public static async Task SetupCosmosDBEntitiesAsync(CosmosDBAccount cosmosDBAccount) { Database database = await CosmosExtension.SetupDatabaseAsync(cosmosDBAccount.Database, cosmosDBAccount.CreateIfContainerNotExists, cosmosDBAccount.DeleteIfDatabaseExists, CosmosClientPool.GetCosmosClient(cosmosDBAccount)); await CosmosExtension.SetupCollectionAsync(database, cosmosDBAccount.Container, cosmosDBAccount.PartitionKeyPath, cosmosDBAccount.CreateIfContainerNotExists, cosmosDBAccount.DeleteIfContainerExists); }