public Task<IListener> CreateAsync(CancellationToken cancellationToken) { QueueTriggerExecutor triggerExecutor = new QueueTriggerExecutor(_executor); IDelayStrategy delayStrategy = new RandomizedExponentialBackoffStrategy(QueuePollingIntervals.Minimum, _queueConfiguration.MaxPollingInterval); SharedQueueWatcher sharedWatcher = _sharedContextProvider.GetOrCreate<SharedQueueWatcher>( new SharedQueueWatcherFactory(_messageEnqueuedWatcherSetter)); IListener listener = new QueueListener(_queue, _poisonQueue, triggerExecutor, delayStrategy, _backgroundExceptionDispatcher, _trace, sharedWatcher, _queueConfiguration); return Task.FromResult(listener); }
public Task<IListener> CreateAsync(ListenerFactoryContext context) { ITriggerExecutor<IStorageQueueMessage> triggerExecutor = new HostMessageExecutor(_executor, _functionLookup, _functionInstanceLogger); TimeSpan configuredMaximum = _queueConfiguration.MaxPollingInterval; // Provide an upper bound on the maximum polling interval for run/abort from dashboard. // Use the default maximum for host polling (1 minute) unless the configured overall maximum is even faster. TimeSpan maximum = configuredMaximum < DefaultMaximum ? configuredMaximum : DefaultMaximum; IDelayStrategy delayStrategy = new RandomizedExponentialBackoffStrategy(Minimum, maximum); IListener listener = new QueueListener(_queue, poisonQueue: null, triggerExecutor: triggerExecutor, delayStrategy: delayStrategy, backgroundExceptionDispatcher: _backgroundExceptionDispatcher, log: _log, sharedWatcher: null, queueConfiguration: _queueConfiguration); return Task.FromResult(listener); }