public static async Task QueueProcessor([QueueTrigger("%QueueName%", Connection = "StorageConnectionString")] QueueWorkItem myQueueItem, [CosmosDB( databaseName: "%CosmosDBDatabase%", collectionName: "%CosmosDBCollection%", ConnectionStringSetting = "CosmosDBConnectionString", Id = "{Id}", PartitionKey = "{Partitionkey}")] DocDBRecord document, [Table("%ProcessingResultsTable%", Connection = "StorageConnectionString")] IAsyncCollector <ProcessingResult> tableOutput, ILogger log) { await DocumentProcessor.ProcessDocument(document, tableOutput, log, nameof(QueueProcessor)); }
public static async Task CosmosDbChangeProcessor([CosmosDBTrigger( databaseName: "%CosmosDBDatabase%", collectionName: "%CosmosDBCollection%", ConnectionStringSetting = "CosmosDBConnectionString", LeaseCollectionName = "CosmosDBChangeProcessorLeases", MaxItemsPerInvocation = 9, /*we need to set this to prevent timeouts when too many records are grabbed. Calculated using (functiontimeoutduration * 60 / ItemProcessingDurationSeconds) -1 for overhead*/ CreateLeaseCollectionIfNotExists = true)] IReadOnlyList <Document> input, [Table("%ProcessingResultsTable%", Connection = "StorageConnectionString")] IAsyncCollector <ProcessingResult> tableOutput, ILogger log) { if (input == null || input.Count <= 0) { return; } await input.ParallelForEachAsync(async doc => { await DocumentProcessor.ProcessDocument(doc, tableOutput, log, nameof(CosmosDbChangeProcessor)); }); }