in Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo/Trigger/CosmosDBMongoTriggerListener.cs [33:64]
public CosmosDBMongoTriggerListener(ITriggeredFunctionExecutor executor, MongoCollectionReference reference, ILogger logger)
{
this._executor = executor ?? throw new ArgumentNullException(nameof(executor));
this._reference = reference;
this._logger = logger;
this._cancellationTokenSource = new CancellationTokenSource();
this._currentMetrics = new CosmosDBMongoTriggerMetrics();
// Initialize the worker pool
var executionDataflowBlockOptions = new ExecutionDataflowBlockOptions
{
MaxDegreeOfParallelism = MaxConcurrency,
CancellationToken = this._cancellationTokenSource.Token
};
this._workerPool = new ActionBlock<ChangeStreamDocument<BsonDocument>>(
async document => await ProcessChangeAsync(document),
executionDataflowBlockOptions);
if (string.IsNullOrEmpty(this._reference.databaseName))
{
this._triggerLevel = MonitorLevel.Cluster;
}
else if (string.IsNullOrEmpty(this._reference.collectionName))
{
this._triggerLevel = MonitorLevel.Database;
}
else
{
this._triggerLevel = MonitorLevel.Collection;
}
}