public QueueTriggerBinding(string parameterName, QueueServiceClient queueServiceClient, QueueClient queue, ITriggerDataArgumentBinding <QueueMessage> argumentBinding, QueuesOptions queueOptions, IWebJobsExceptionHandler exceptionHandler, SharedQueueWatcher messageEnqueuedWatcherSetter, ILoggerFactory loggerFactory, IQueueProcessorFactory queueProcessorFactory, QueueCausalityManager queueCausalityManager) { _queueServiceClient = queueServiceClient ?? throw new ArgumentNullException(nameof(queueServiceClient)); _queue = queue ?? throw new ArgumentNullException(nameof(queue)); _argumentBinding = argumentBinding ?? throw new ArgumentNullException(nameof(argumentBinding)); _bindingDataContract = CreateBindingDataContract(argumentBinding.BindingDataContract); _queueOptions = queueOptions ?? throw new ArgumentNullException(nameof(queueOptions)); _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter ?? throw new ArgumentNullException(nameof(messageEnqueuedWatcherSetter)); _queueCausalityManager = queueCausalityManager ?? throw new ArgumentNullException(nameof(queueCausalityManager)); _parameterName = parameterName; _loggerFactory = loggerFactory; _queueProcessorFactory = queueProcessorFactory; _converter = CreateConverter(_queue); _logger = loggerFactory.CreateLogger <QueueTriggerBinding>(); }
public BlobTriggerAttributeBindingProvider(INameResolver nameResolver, IStorageAccountProvider accountProvider, IExtensionTypeLocator extensionTypeLocator, IHostIdProvider hostIdProvider, IQueueConfiguration queueConfiguration, JobHostBlobsConfiguration blobsConfiguration, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IBlobWrittenWatcher> blobWrittenWatcherSetter, IContextSetter <IMessageEnqueuedWatcher> messageEnqueuedWatcherSetter, ISharedContextProvider sharedContextProvider, SingletonManager singletonManager, ILoggerFactory loggerFactory) { if (extensionTypeLocator == null) { throw new ArgumentNullException(nameof(extensionTypeLocator)); } _accountProvider = accountProvider ?? throw new ArgumentNullException(nameof(accountProvider)); _hostIdProvider = hostIdProvider ?? throw new ArgumentNullException(nameof(hostIdProvider)); _queueConfiguration = queueConfiguration ?? throw new ArgumentNullException(nameof(queueConfiguration)); _blobsConfiguration = blobsConfiguration ?? throw new ArgumentNullException(nameof(blobsConfiguration)); _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 QueueListenerFactory( QueueServiceClient queueServiceClient, QueueClient queue, QueuesOptions queueOptions, IWebJobsExceptionHandler exceptionHandler, SharedQueueWatcher messageEnqueuedWatcherSetter, ILoggerFactory loggerFactory, ITriggeredFunctionExecutor executor, IQueueProcessorFactory queueProcessorFactory, QueueCausalityManager queueCausalityManager, FunctionDescriptor descriptor ) { _queue = queue ?? throw new ArgumentNullException(nameof(queue)); _queueOptions = queueOptions ?? throw new ArgumentNullException(nameof(queueOptions)); _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter ?? throw new ArgumentNullException(nameof(messageEnqueuedWatcherSetter)); _executor = executor ?? throw new ArgumentNullException(nameof(executor)); _descriptor = descriptor ?? throw new ArgumentNullException(nameof(descriptor)); _queueCausalityManager = queueCausalityManager ?? throw new ArgumentNullException(nameof(queueCausalityManager)); _poisonQueue = CreatePoisonQueueReference(queueServiceClient, queue.Name); _loggerFactory = loggerFactory; _queueProcessorFactory = queueProcessorFactory; }
// This will throw if the client credentials are not valid. public static async Task <BlobLogListener> CreateAsync(BlobServiceClient blobClient, IWebJobsExceptionHandler exceptionHandler, ILogger <BlobListener> logger, CancellationToken cancellationToken) { await EnableLoggingAsync(blobClient, cancellationToken).ConfigureAwait(false); return(new BlobLogListener(blobClient, exceptionHandler, logger)); }
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 QueueTriggerAttributeBindingProvider(INameResolver nameResolver, QueueServiceClientProvider queueServiceClientProvider, IOptions <QueuesOptions> queueOptions, IWebJobsExceptionHandler exceptionHandler, SharedQueueWatcher messageEnqueuedWatcherSetter, ILoggerFactory loggerFactory, IQueueProcessorFactory queueProcessorFactory, QueueCausalityManager queueCausalityManager) { _queueServiceClientProvider = queueServiceClientProvider ?? throw new ArgumentNullException(nameof(queueServiceClientProvider)); _queueOptions = (queueOptions ?? throw new ArgumentNullException(nameof(queueOptions))).Value; _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter ?? throw new ArgumentNullException(nameof(messageEnqueuedWatcherSetter)); _queueCausalityManager = queueCausalityManager ?? throw new ArgumentNullException(nameof(queueCausalityManager)); _nameResolver = nameResolver; _loggerFactory = loggerFactory; _queueProcessorFactory = queueProcessorFactory; _innerProvider = new CompositeArgumentBindingProvider( new ConverterArgumentBindingProvider <QueueMessage>(new CloudQueueMessageDirectConverter(), loggerFactory), // $$$: Is this the best way to handle a direct CloudQueueMessage? TODO (kasobol-msft) is this needed? new ConverterArgumentBindingProvider <string>(new StorageQueueMessageToStringConverter(), loggerFactory), new ConverterArgumentBindingProvider <byte[]>(new StorageQueueMessageToByteArrayConverter(), loggerFactory), new ConverterArgumentBindingProvider <BinaryData>(new StorageQueueMessageToBinaryDataConverter(), loggerFactory), new UserTypeArgumentBindingProvider(loggerFactory)); // Must come last, because it will attempt to bind all types. }
public FunctionExecutor(IFunctionInstanceLogger functionInstanceLogger, IFunctionOutputLogger functionOutputLogger, IWebJobsExceptionHandler exceptionHandler, TraceWriter trace, IAsyncCollector <FunctionInstanceLogEntry> functionEventCollector = null, ILoggerFactory loggerFactory = null) { if (functionInstanceLogger == null) { throw new ArgumentNullException("functionInstanceLogger"); } if (functionOutputLogger == null) { throw new ArgumentNullException("functionOutputLogger"); } if (exceptionHandler == null) { throw new ArgumentNullException("exceptionHandler"); } if (trace == null) { throw new ArgumentNullException("trace"); } _functionInstanceLogger = functionInstanceLogger; _functionOutputLogger = functionOutputLogger; _exceptionHandler = exceptionHandler; _trace = trace; _functionEventCollector = functionEventCollector; _logger = loggerFactory?.CreateLogger(LogCategories.Executor); _resultsLogger = loggerFactory?.CreateLogger(LogCategories.Results); }
public HeartbeatFunctionExecutor(IRecurrentCommand heartbeatCommand, IWebJobsExceptionHandler exceptionHandler, IFunctionExecutor innerExecutor) { _heartbeatCommand = heartbeatCommand; _exceptionHandler = exceptionHandler; _innerExecutor = innerExecutor; }
public HeartbeatListener(IRecurrentCommand heartbeatCommand, IWebJobsExceptionHandler exceptionHandler, IListener innerListener) { _heartbeatCommand = heartbeatCommand; _innerListener = innerListener; _timer = CreateTimer(exceptionHandler); }
public static ITriggerBindingProvider Create(INameResolver nameResolver, IStorageAccountProvider storageAccountProvider, IExtensionTypeLocator extensionTypeLocator, IHostIdProvider hostIdProvider, IQueueConfiguration queueConfiguration, JobHostBlobsConfiguration blobsConfiguration, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IMessageEnqueuedWatcher> messageEnqueuedWatcherSetter, IContextSetter <IBlobWrittenWatcher> blobWrittenWatcherSetter, ISharedContextProvider sharedContextProvider, IExtensionRegistry extensions, SingletonManager singletonManager, TraceWriter trace, ILoggerFactory loggerFactory) { List <ITriggerBindingProvider> innerProviders = new List <ITriggerBindingProvider>(); innerProviders.Add(new QueueTriggerAttributeBindingProvider(nameResolver, storageAccountProvider, queueConfiguration, exceptionHandler, messageEnqueuedWatcherSetter, sharedContextProvider, trace, loggerFactory)); innerProviders.Add(new BlobTriggerAttributeBindingProvider(nameResolver, storageAccountProvider, extensionTypeLocator, hostIdProvider, queueConfiguration, blobsConfiguration, exceptionHandler, blobWrittenWatcherSetter, messageEnqueuedWatcherSetter, sharedContextProvider, singletonManager, trace, loggerFactory)); // add any registered extension binding providers foreach (ITriggerBindingProvider provider in extensions.GetExtensions(typeof(ITriggerBindingProvider))) { innerProviders.Add(provider); } return(new CompositeTriggerBindingProvider(innerProviders)); }
public FunctionExecutor(IFunctionInstanceLogger functionInstanceLogger, IFunctionOutputLogger functionOutputLogger, IWebJobsExceptionHandler exceptionHandler, TraceWriter trace, IAsyncCollector <FunctionInstanceLogEntry> fastLogger = null) { if (functionInstanceLogger == null) { throw new ArgumentNullException("functionInstanceLogger"); } if (functionOutputLogger == null) { throw new ArgumentNullException("functionOutputLogger"); } if (exceptionHandler == null) { throw new ArgumentNullException("exceptionHandler"); } if (trace == null) { throw new ArgumentNullException("trace"); } _functionInstanceLogger = functionInstanceLogger; _functionOutputLogger = functionOutputLogger; _exceptionHandler = exceptionHandler; _trace = trace; _fastLogger = fastLogger; }
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 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 SharedBlobListener(string hostId, StorageAccount storageAccount, IWebJobsExceptionHandler exceptionHandler) { _strategy = CreateStrategy(hostId, storageAccount); // Start the first iteration immediately. _timer = new TaskSeriesTimer(_strategy, exceptionHandler, initialWait: Task.Delay(0)); }
public WebScriptHostManager(ScriptHostConfiguration config, ISecretManagerFactory secretManagerFactory, ScriptSettingsManager settingsManager, WebHostSettings webHostSettings, IScriptHostFactory scriptHostFactory = null, ISecretsRepositoryFactory secretsRepositoryFactory = null) : base(config, settingsManager, scriptHostFactory) { _config = config; _metricsLogger = new WebHostMetricsLogger(); _exceptionHandler = new WebScriptHostExceptionHandler(this); _webHostSettings = webHostSettings; var systemEventGenerator = config.HostConfig.GetService <IEventGenerator>() ?? new EventGenerator(); var systemTraceWriter = new SystemTraceWriter(systemEventGenerator, settingsManager, TraceLevel.Verbose); if (config.TraceWriter != null) { config.TraceWriter = new CompositeTraceWriter(new TraceWriter[] { config.TraceWriter, systemTraceWriter }); } else { config.TraceWriter = systemTraceWriter; } config.IsSelfHost = webHostSettings.IsSelfHost; _performanceManager = new HostPerformanceManager(settingsManager, config.TraceWriter); _swaggerDocumentManager = new SwaggerDocumentManager(config); var secretsRepository = secretsRepositoryFactory.Create(settingsManager, webHostSettings, config); _secretManager = secretManagerFactory.Create(settingsManager, config.TraceWriter, secretsRepository); }
private async Task RunTimeoutTest(IWebJobsExceptionHandler exceptionHandler, Type expectedExceptionType, string functionName) { TestTraceWriter trace = new TestTraceWriter(TraceLevel.Verbose); _hostConfig.Tracing.Tracers.Add(trace); _hostConfig.AddService <IWebJobsExceptionHandler>(exceptionHandler); JobHost host = new JobHost(_hostConfig); try { await host.StartAsync(); MethodInfo methodInfo = GetType().GetMethod(functionName); Exception ex = await Assert.ThrowsAnyAsync <Exception>(async() => { await host.CallAsync(methodInfo); }); Assert.IsType(expectedExceptionType, ex); } finally { host.Stop(); } // We expect 3 error messages total TraceEvent[] traceErrors = trace.Traces.Where(p => p.Level == TraceLevel.Error).ToArray(); Assert.Equal(3, traceErrors.Length); Assert.True(traceErrors[0].Message.StartsWith(string.Format("Timeout value of 00:00:01 exceeded by function 'AsyncChainEndToEndTests.{0}'", functionName))); Assert.True(traceErrors[1].Message.StartsWith(string.Format("Executed 'AsyncChainEndToEndTests.{0}' (Failed, Id=", functionName))); Assert.True(traceErrors[2].Message.Trim().StartsWith("Function had errors. See Azure WebJobs SDK dashboard for details.")); }
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 WebScriptHostManager(ScriptHostConfiguration config, ISecretManagerFactory secretManagerFactory, IScriptEventManager eventManager, ScriptSettingsManager settingsManager, WebHostSettings webHostSettings, IWebJobsRouter router, ILoggerFactory loggerFactory, IScriptHostFactory scriptHostFactory = null, ISecretsRepositoryFactory secretsRepositoryFactory = null, HostPerformanceManager hostPerformanceManager = null, ILoggerProviderFactory loggerProviderFactory = null, int hostTimeoutSeconds = 30, int hostPollingIntervalMilliseconds = 500) : base(config, settingsManager, scriptHostFactory, eventManager, environment: null, hostPerformanceManager: hostPerformanceManager, loggerProviderFactory: loggerProviderFactory) { _config = config; _metricsLogger = new WebHostMetricsLogger(); _exceptionHandler = new WebScriptHostExceptionHandler(this); _webHostSettings = webHostSettings; _settingsManager = settingsManager; _hostTimeoutSeconds = hostTimeoutSeconds; _hostRunningPollIntervalMilliseconds = hostPollingIntervalMilliseconds; _router = router; config.IsSelfHost = webHostSettings.IsSelfHost; secretsRepositoryFactory = secretsRepositoryFactory ?? new DefaultSecretsRepositoryFactory(); var secretsRepository = secretsRepositoryFactory.Create(settingsManager, webHostSettings, config); _secretManager = secretManagerFactory.Create(settingsManager, loggerFactory.CreateLogger(ScriptConstants.LogCategoryHostGeneral), secretsRepository); _bindingWebHookProvider = new WebJobsSdkExtensionHookProvider(_secretManager); }
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 QueueListener(IStorageQueue queue, IStorageQueue poisonQueue, ITriggerExecutor <IStorageQueueMessage> triggerExecutor, IWebJobsExceptionHandler exceptionHandler, ILoggerFactory loggerFactory, SharedQueueWatcher sharedWatcher, IQueueConfiguration queueConfiguration, QueueProcessor queueProcessor = null, TimeSpan?maxPollingInterval = null) { if (queueConfiguration == null) { throw new ArgumentNullException("queueConfiguration"); } if (queueConfiguration.BatchSize <= 0) { throw new ArgumentException("BatchSize must be greater than zero."); } if (queueConfiguration.MaxDequeueCount <= 0) { throw new ArgumentException("MaxDequeueCount must be greater than zero."); } _timer = new TaskSeriesTimer(this, exceptionHandler, Task.Delay(0)); _queue = queue; _poisonQueue = poisonQueue; _triggerExecutor = triggerExecutor; _exceptionHandler = exceptionHandler; _queueConfiguration = queueConfiguration; // if the function runs longer than this, the invisibility will be updated // on a timer periodically for the duration of the function execution _visibilityTimeout = TimeSpan.FromMinutes(10); if (sharedWatcher != null) { // Call Notify whenever a function adds a message to this queue. sharedWatcher.Register(queue.Name, this); _sharedWatcher = sharedWatcher; } EventHandler <PoisonMessageEventArgs> poisonMessageEventHandler = _sharedWatcher != null ? OnMessageAddedToPoisonQueue : (EventHandler <PoisonMessageEventArgs>)null; _queueProcessor = queueProcessor ?? CreateQueueProcessor( _queue.SdkObject, _poisonQueue != null ? _poisonQueue.SdkObject : null, loggerFactory, _queueConfiguration, poisonMessageEventHandler); TimeSpan maximumInterval = _queueProcessor.MaxPollingInterval; if (maxPollingInterval.HasValue && maximumInterval > maxPollingInterval.Value) { // enforce the maximum polling interval if specified maximumInterval = maxPollingInterval.Value; } _delayStrategy = new RandomizedExponentialBackoffStrategy(QueuePollingIntervals.Minimum, maximumInterval); }
private BlobLogListener(BlobServiceClient blobClient, IWebJobsExceptionHandler exceptionHandler, ILogger <BlobListener> logger) { _blobClient = blobClient; _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _parser = new StorageAnalyticsLogParser(logger); }
public static ITaskSeriesTimer CreateTimer(IRecurrentCommand command, TimeSpan initialInterval, TimeSpan delayInterval, IWebJobsExceptionHandler exceptionHandler) { IDelayStrategy delayStrategy = new FixedDelayStrategy(delayInterval); ITaskSeriesCommand timerCommand = new RecurrentTaskSeriesCommand(command, delayStrategy); return(new TaskSeriesTimer(timerCommand, exceptionHandler, Task.Delay(initialInterval))); }
public static ITaskSeriesTimer CreateTimer(IRecurrentCommand command, TimeSpan normalInterval, TimeSpan minimumInterval, IWebJobsExceptionHandler exceptionHandler) { IDelayStrategy delayStrategy = new LinearSpeedupStrategy(normalInterval, minimumInterval); ITaskSeriesCommand timerCommand = new RecurrentTaskSeriesCommand(command, delayStrategy); return(new TaskSeriesTimer(timerCommand, exceptionHandler, Task.Delay(normalInterval))); }
// Begin watchers. public ValueWatcher(IReadOnlyDictionary <string, IWatcher> watches, CloudBlockBlob blobResults, TextWriter consoleOutput, IWebJobsExceptionHandler exceptionHandler) { ValueWatcherCommand command = new ValueWatcherCommand(watches, blobResults, consoleOutput); _command = command; _timer = ValueWatcherCommand.CreateTimer(command, exceptionHandler); _timer.Start(); }
public QueueTriggerBinding(string parameterName, IStorageQueue queue, ITriggerDataArgumentBinding <IStorageQueueMessage> argumentBinding, IQueueConfiguration queueConfiguration, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IMessageEnqueuedWatcher> messageEnqueuedWatcherSetter, ISharedContextProvider sharedContextProvider, TraceWriter trace, ILoggerFactory loggerFactory) { if (queue == null) { throw new ArgumentNullException("queue"); } if (argumentBinding == null) { throw new ArgumentNullException("argumentBinding"); } if (queueConfiguration == null) { throw new ArgumentNullException("queueConfiguration"); } if (exceptionHandler == null) { throw new ArgumentNullException("exceptionHandler"); } if (messageEnqueuedWatcherSetter == null) { throw new ArgumentNullException("messageEnqueuedWatcherSetter"); } if (sharedContextProvider == null) { throw new ArgumentNullException("sharedContextProvider"); } if (trace == null) { throw new ArgumentNullException("trace"); } _parameterName = parameterName; _queue = queue; _argumentBinding = argumentBinding; _bindingDataContract = CreateBindingDataContract(argumentBinding.BindingDataContract); _queueConfiguration = queueConfiguration; _exceptionHandler = exceptionHandler; _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter; _sharedContextProvider = sharedContextProvider; _trace = trace; _loggerFactory = loggerFactory; _converter = CreateConverter(queue); }
public SingletonManager(IStorageAccountProvider accountProvider, IWebJobsExceptionHandler exceptionHandler, SingletonConfiguration config, TraceWriter trace, IHostIdProvider hostIdProvider, INameResolver nameResolver = null) { _accountProvider = accountProvider; _nameResolver = nameResolver; _exceptionHandler = exceptionHandler; _config = config; _trace = trace; _hostIdProvider = hostIdProvider; }
public ScanBlobScanLogHybridPollingStrategy(IBlobScanInfoManager blobScanInfoManager, IWebJobsExceptionHandler exceptionHandler, ILogger <BlobListener> logger) : base() { _blobScanInfoManager = blobScanInfoManager; _scanInfo = new Dictionary <BlobContainerClient, ContainerScanInfo>(new CloudBlobContainerComparer()); _pollLogStrategy = new PollLogsStrategy(exceptionHandler, logger, performInitialScan: false); _cancellationTokenSource = new CancellationTokenSource(); _blobsFoundFromScanOrNotification = new ConcurrentQueue <BlobNotification>(); _exceptionHandler = exceptionHandler ?? throw new ArgumentNullException(nameof(exceptionHandler)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); }
public QueueListenerFactory(IStorageQueue queue, IQueueConfiguration queueConfiguration, IWebJobsExceptionHandler exceptionHandler, IContextSetter <IMessageEnqueuedWatcher> messageEnqueuedWatcherSetter, ISharedContextProvider sharedContextProvider, TraceWriter trace, ILoggerFactory loggerFactory, ITriggeredFunctionExecutor executor) { if (queue == null) { throw new ArgumentNullException("queue"); } if (queueConfiguration == null) { throw new ArgumentNullException("queueConfiguration"); } if (exceptionHandler == null) { throw new ArgumentNullException("exceptionHandler"); } if (messageEnqueuedWatcherSetter == null) { throw new ArgumentNullException("messageEnqueuedWatcherSetter"); } if (sharedContextProvider == null) { throw new ArgumentNullException("sharedContextProvider"); } if (trace == null) { throw new ArgumentNullException("trace"); } if (executor == null) { throw new ArgumentNullException("executor"); } _queue = queue; _poisonQueue = CreatePoisonQueueReference(queue.ServiceClient, queue.Name); _queueConfiguration = queueConfiguration; _exceptionHandler = exceptionHandler; _messageEnqueuedWatcherSetter = messageEnqueuedWatcherSetter; _sharedContextProvider = sharedContextProvider; _trace = trace; _loggerFactory = loggerFactory; _executor = executor; }
public SharedBlobQueueListenerFactory( IStorageAccount hostAccount, SharedQueueWatcher sharedQueueWatcher, IStorageQueue hostBlobTriggerQueue, IQueueConfiguration queueConfiguration, IWebJobsExceptionHandler exceptionHandler, TraceWriter trace, ILoggerFactory loggerFactory, IBlobWrittenWatcher blobWrittenWatcher) { if (hostAccount == null) { throw new ArgumentNullException("hostAccount"); } if (sharedQueueWatcher == null) { throw new ArgumentNullException("sharedQueueWatcher"); } if (hostBlobTriggerQueue == null) { throw new ArgumentNullException("hostBlobTriggerQueue"); } if (queueConfiguration == null) { throw new ArgumentNullException("queueConfiguration"); } if (exceptionHandler == null) { throw new ArgumentNullException("exceptionHandler"); } if (trace == null) { throw new ArgumentNullException("trace"); } if (blobWrittenWatcher == null) { throw new ArgumentNullException("blobWrittenWatcher"); } _hostAccount = hostAccount; _sharedQueueWatcher = sharedQueueWatcher; _hostBlobTriggerQueue = hostBlobTriggerQueue; _queueConfiguration = queueConfiguration; _exceptionHandler = exceptionHandler; _trace = trace; _loggerFactory = loggerFactory; _blobWrittenWatcher = blobWrittenWatcher; }
private ITaskSeriesTimer CreateLeaseRenewalTimer(IStorageBlockBlob leaseBlob, string leaseId, string lockId, TimeSpan leasePeriod, IWebJobsExceptionHandler exceptionHandler) { // renew the lease when it is halfway to expiring TimeSpan normalUpdateInterval = new TimeSpan(leasePeriod.Ticks / 2); IDelayStrategy speedupStrategy = new LinearSpeedupStrategy(normalUpdateInterval, MinimumLeaseRenewalInterval); ITaskSeriesCommand command = new RenewLeaseCommand(leaseBlob, leaseId, lockId, speedupStrategy, _trace); return(new TaskSeriesTimer(command, exceptionHandler, Task.Delay(normalUpdateInterval))); }
public WebScriptHostManager(ScriptHostConfiguration config, ISecretManagerFactory secretManagerFactory, ScriptSettingsManager settingsManager, WebHostSettings webHostSettings, IScriptHostFactory scriptHostFactory = null) : base(config, settingsManager, scriptHostFactory) { _config = config; _metricsLogger = new WebHostMetricsLogger(); _exceptionHandler = new WebScriptHostExceptionHandler(this); _webHostSettings = webHostSettings; var systemEventGenerator = config.HostConfig.GetService<IEventGenerator>() ?? new EventGenerator(); var systemTraceWriter = new SystemTraceWriter(systemEventGenerator, settingsManager, TraceLevel.Verbose); if (config.TraceWriter != null) { config.TraceWriter = new CompositeTraceWriter(new TraceWriter[] { config.TraceWriter, systemTraceWriter }); } else { config.TraceWriter = systemTraceWriter; } _secretManager = secretManagerFactory.Create(settingsManager, config.TraceWriter, webHostSettings.SecretsPath); }