public BlobTriggerBinding(ParameterInfo parameter, BlobServiceClient hostBlobServiceClient, QueueServiceClient hostQueueServiceClient, BlobServiceClient dataBlobServiceClient, QueueServiceClient dataQueueServiceClient, IBlobPathSource path, IHostIdProvider hostIdProvider, BlobsOptions blobsOptions, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IBlobWrittenWatcher> blobWrittenWatcherSetter, SharedQueueWatcher messageEnqueuedWatcherSetter, ISharedContextProvider sharedContextProvider, IHostSingletonManager singletonManager, ILoggerFactory loggerFactory) { _parameter = parameter ?? throw new ArgumentNullException(nameof(parameter)); _hostBlobServiceClient = hostBlobServiceClient ?? throw new ArgumentNullException(nameof(hostBlobServiceClient)); _hostQueueServiceClient = hostQueueServiceClient ?? throw new ArgumentNullException(nameof(hostQueueServiceClient)); _dataBlobServiceClient = dataBlobServiceClient ?? throw new ArgumentNullException(nameof(dataBlobServiceClient)); _dataQueueServiceClient = dataQueueServiceClient ?? throw new ArgumentNullException(nameof(dataQueueServiceClient)); _accountName = _dataBlobServiceClient.AccountName; _path = path ?? throw new ArgumentNullException(nameof(path)); _hostIdProvider = hostIdProvider ?? throw new ArgumentNullException(nameof(hostIdProvider)); _blobsOptions = blobsOptions ?? throw new ArgumentNullException(nameof(blobsOptions)); _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _blobWrittenWatcherSetter = blobWrittenWatcherSetter ?? throw new ArgumentNullException(nameof(blobWrittenWatcherSetter)); _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter ?? throw new ArgumentNullException(nameof(messageEnqueuedWatcherSetter)); _sharedContextProvider = sharedContextProvider ?? throw new ArgumentNullException(nameof(sharedContextProvider)); _singletonManager = singletonManager ?? throw new ArgumentNullException(nameof(singletonManager)); _loggerFactory = loggerFactory; _converter = CreateConverter(_dataBlobServiceClient); _bindingDataContract = CreateBindingDataContract(path); }
public BlobTriggerAttributeBindingProvider( INameResolver nameResolver, BlobServiceClientProvider blobServiceClientProvider, QueueServiceClientProvider queueServiceClientProvider, IHostIdProvider hostIdProvider, IOptions <BlobsOptions> blobsOptions, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IBlobWrittenWatcher> blobWrittenWatcherSetter, BlobTriggerQueueWriterFactory blobTriggerQueueWriterFactory, ISharedContextProvider sharedContextProvider, IHostSingletonManager singletonManager, ILoggerFactory loggerFactory) { _blobServiceClientProvider = blobServiceClientProvider ?? throw new ArgumentNullException(nameof(blobServiceClientProvider)); _queueServiceClientProvider = queueServiceClientProvider ?? throw new ArgumentNullException(nameof(queueServiceClientProvider)); _hostIdProvider = hostIdProvider ?? throw new ArgumentNullException(nameof(hostIdProvider)); _blobsOptions = (blobsOptions ?? throw new ArgumentNullException(nameof(blobsOptions))).Value; _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _blobWrittenWatcherSetter = blobWrittenWatcherSetter ?? throw new ArgumentNullException(nameof(blobWrittenWatcherSetter)); _blobTriggerQueueWriterFactory = blobTriggerQueueWriterFactory ?? throw new ArgumentNullException(nameof(blobTriggerQueueWriterFactory)); _sharedContextProvider = sharedContextProvider ?? throw new ArgumentNullException(nameof(sharedContextProvider)); _singletonManager = singletonManager ?? throw new ArgumentNullException(nameof(singletonManager)); _nameResolver = nameResolver; _loggerFactory = loggerFactory; _logger = loggerFactory.CreateLogger <BlobTriggerAttributeBindingProvider>(); }
public BlobTriggerAttributeBindingProvider(INameResolver nameResolver, StorageAccountProvider accountProvider, IHostIdProvider hostIdProvider, IOptions <QueuesOptions> queueOptions, IOptions <BlobsOptions> blobsOptions, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IBlobWrittenWatcher> blobWrittenWatcherSetter, SharedQueueWatcher messageEnqueuedWatcherSetter, ISharedContextProvider sharedContextProvider, IHostSingletonManager singletonManager, ILoggerFactory loggerFactory) { _accountProvider = accountProvider ?? throw new ArgumentNullException(nameof(accountProvider)); _hostIdProvider = hostIdProvider ?? throw new ArgumentNullException(nameof(hostIdProvider)); _queueOptions = (queueOptions ?? throw new ArgumentNullException(nameof(queueOptions))).Value; _blobsOptions = (blobsOptions ?? throw new ArgumentNullException(nameof(blobsOptions))).Value; _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _blobWrittenWatcherSetter = blobWrittenWatcherSetter ?? throw new ArgumentNullException(nameof(blobWrittenWatcherSetter)); _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter ?? throw new ArgumentNullException(nameof(messageEnqueuedWatcherSetter)); _sharedContextProvider = sharedContextProvider ?? throw new ArgumentNullException(nameof(sharedContextProvider)); _singletonManager = singletonManager ?? throw new ArgumentNullException(nameof(singletonManager)); _nameResolver = nameResolver; _loggerFactory = loggerFactory; }
public BlobListenerFactory(IHostIdProvider hostIdProvider, BlobsOptions blobsOptions, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IBlobWrittenWatcher> blobWrittenWatcherSetter, SharedQueueWatcher messageEnqueuedWatcherSetter, ISharedContextProvider sharedContextProvider, ILoggerFactory loggerFactory, FunctionDescriptor functionDescriptor, BlobServiceClient hostBlobServiceClient, QueueServiceClient hostQueueServiceClient, BlobServiceClient dataBlobServiceClient, QueueServiceClient dataQueueServiceClient, BlobContainerClient container, IBlobPathSource input, ITriggeredFunctionExecutor executor, IHostSingletonManager singletonManager) { _hostIdProvider = hostIdProvider ?? throw new ArgumentNullException(nameof(hostIdProvider)); _blobsOptions = blobsOptions ?? throw new ArgumentNullException(nameof(blobsOptions)); _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _blobWrittenWatcherSetter = blobWrittenWatcherSetter ?? throw new ArgumentNullException(nameof(blobWrittenWatcherSetter)); _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter ?? throw new ArgumentNullException(nameof(messageEnqueuedWatcherSetter)); _sharedContextProvider = sharedContextProvider ?? throw new ArgumentNullException(nameof(sharedContextProvider)); _functionDescriptor = functionDescriptor ?? throw new ArgumentNullException(nameof(functionDescriptor)); _loggerFactory = loggerFactory; _hostBlobServiceClient = hostBlobServiceClient ?? throw new ArgumentNullException(nameof(hostBlobServiceClient)); _hostQueueServiceClient = hostQueueServiceClient ?? throw new ArgumentNullException(nameof(hostQueueServiceClient)); _dataBlobServiceClient = dataBlobServiceClient ?? throw new ArgumentNullException(nameof(dataBlobServiceClient)); _dataQueueServiceClient = dataQueueServiceClient ?? throw new ArgumentNullException(nameof(dataQueueServiceClient)); _container = container ?? throw new ArgumentNullException(nameof(container)); _input = input ?? throw new ArgumentNullException(nameof(input)); _executor = executor ?? throw new ArgumentNullException(nameof(executor)); _singletonManager = singletonManager ?? throw new ArgumentNullException(nameof(singletonManager)); }
public BlobListenerFactory(IHostIdProvider hostIdProvider, QueuesOptions queueOptions, BlobsOptions blobsOptions, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IBlobWrittenWatcher> blobWrittenWatcherSetter, SharedQueueWatcher messageEnqueuedWatcherSetter, ISharedContextProvider sharedContextProvider, ILoggerFactory loggerFactory, string functionId, StorageAccount hostAccount, StorageAccount dataAccount, CloudBlobContainer container, IBlobPathSource input, ITriggeredFunctionExecutor executor, IHostSingletonManager singletonManager) { _hostIdProvider = hostIdProvider ?? throw new ArgumentNullException(nameof(hostIdProvider)); _queueOptions = queueOptions ?? throw new ArgumentNullException(nameof(queueOptions)); _blobsOptions = blobsOptions ?? throw new ArgumentNullException(nameof(blobsOptions)); _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _blobWrittenWatcherSetter = blobWrittenWatcherSetter ?? throw new ArgumentNullException(nameof(blobWrittenWatcherSetter)); _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter ?? throw new ArgumentNullException(nameof(messageEnqueuedWatcherSetter)); _sharedContextProvider = sharedContextProvider ?? throw new ArgumentNullException(nameof(sharedContextProvider)); _loggerFactory = loggerFactory; _functionId = functionId; _hostAccount = hostAccount ?? throw new ArgumentNullException(nameof(hostAccount)); _dataAccount = dataAccount ?? throw new ArgumentNullException(nameof(dataAccount)); _container = container ?? throw new ArgumentNullException(nameof(container)); _input = input ?? throw new ArgumentNullException(nameof(input)); _executor = executor ?? throw new ArgumentNullException(nameof(executor)); _singletonManager = singletonManager ?? throw new ArgumentNullException(nameof(singletonManager)); }
public void ConfigureOptions_AppliesValuesCorrectly_Blobs() { string extensionPath = "AzureWebJobs:Extensions:Blobs"; var values = new Dictionary <string, string> { { $"{extensionPath}:CentralizedPoisonQueue", "true" }, }; BlobsOptions options = TestHelpers.GetConfiguredOptions <BlobsOptions>(b => { b.AddAzureStorageBlobs(); }, values); Assert.True(options.CentralizedPoisonQueue); }
public void ConvertsBlobOptionsToQueueOptionsCorrectly(int maxDegreeOfParallelism, int expectedBatchSize, int expectedNewBatchThreshold) { // Arrange var blobOptions = new BlobsOptions() { MaxDegreeOfParallelism = maxDegreeOfParallelism, }; // Act var queueOptions = SharedBlobQueueListenerFactory.BlobsOptionsToQueuesOptions(blobOptions); // Assert Assert.AreEqual(expectedBatchSize, queueOptions.BatchSize); Assert.AreEqual(expectedNewBatchThreshold, queueOptions.NewBatchThreshold); }
public void ConfigureOptions_AppliesValuesCorrectly_Blobs() { string extensionPath = "AzureWebJobs:Extensions:Blobs"; var values = new Dictionary <string, string> { { $"{extensionPath}:MaxDegreeOfParallelism", "2" }, }; BlobsOptions options = TestHelpers.GetConfiguredOptions <BlobsOptions>(b => { b.AddAzureStorageBlobs(); }, values); Assert.AreEqual(2, options.MaxDegreeOfParallelism); }
internal static QueuesOptions BlobsOptionsToQueuesOptions(BlobsOptions blobsOptions) { // The maximum parallelism of QueueListener is BatchSize + NewBatchThreshold when configuring queue options. I.e. extension will keep requesting new batches until number // of tasks that are still processing messages is below NewBatchThreshold. // Split MaxDegreeOfParallelism between BatchSize and NewBatchThreshold. Cap at MaxBatchSize to not exceed the limit and make sure there's at least 1 message pulled // if MaxDegreeOfParallelism is 1. int batchSize = Math.Min(QueuesOptions.MaxBatchSize, blobsOptions.MaxDegreeOfParallelism / 2 + 1); int newBatchThreshold = blobsOptions.MaxDegreeOfParallelism - batchSize; return(new QueuesOptions() { BatchSize = batchSize, NewBatchThreshold = newBatchThreshold, }); }
public SharedBlobQueueListenerFactory( QueueServiceClient hostQueueServiceClient, SharedQueueWatcher sharedQueueWatcher, QueueClient hostBlobTriggerQueue, BlobsOptions blobsOptions, IWebJobsExceptionHandler exceptionHandler, ILoggerFactory loggerFactory, IBlobWrittenWatcher blobWrittenWatcher, FunctionDescriptor functionDescriptor) { _hostQueueServiceClient = hostQueueServiceClient ?? throw new ArgumentNullException(nameof(hostQueueServiceClient)); _sharedQueueWatcher = sharedQueueWatcher ?? throw new ArgumentNullException(nameof(sharedQueueWatcher)); _hostBlobTriggerQueue = hostBlobTriggerQueue ?? throw new ArgumentNullException(nameof(hostBlobTriggerQueue)); _blobsOptions = blobsOptions ?? throw new ArgumentNullException(nameof(blobsOptions)); _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _loggerFactory = loggerFactory; _blobWrittenWatcher = blobWrittenWatcher ?? throw new ArgumentNullException(nameof(blobWrittenWatcher)); _functionDescriptor = functionDescriptor; }