public QueueListenerTests() { CloudQueue queue = new CloudQueue(new Uri("https://test.queue.core.windows.net/testqueue")); Mock<IStorageQueue> mockQueue = new Mock<IStorageQueue>(MockBehavior.Strict); mockQueue.Setup(p => p.SdkObject).Returns(queue); _mockTriggerExecutor = new Mock<ITriggerExecutor<IStorageQueueMessage>>(MockBehavior.Strict); Mock<IDelayStrategy> mockDelayStrategy = new Mock<IDelayStrategy>(MockBehavior.Strict); Mock<IBackgroundExceptionDispatcher> mockExceptionDispatcher = new Mock<IBackgroundExceptionDispatcher>(MockBehavior.Strict); TextWriter log = new StringWriter(); Mock<IQueueProcessorFactory> mockQueueProcessorFactory = new Mock<IQueueProcessorFactory>(MockBehavior.Strict); JobHostQueuesConfiguration queuesConfig = new JobHostQueuesConfiguration(); QueueProcessorFactoryContext context = new QueueProcessorFactoryContext(queue, log, queuesConfig); _mockQueueProcessor = new Mock<QueueProcessor>(MockBehavior.Strict, context); JobHostQueuesConfiguration queueConfig = new JobHostQueuesConfiguration { MaxDequeueCount = 5, QueueProcessorFactory = mockQueueProcessorFactory.Object }; mockQueueProcessorFactory.Setup(p => p.Create(It.IsAny<QueueProcessorFactoryContext>())).Returns(_mockQueueProcessor.Object); _listener = new QueueListener(mockQueue.Object, null, _mockTriggerExecutor.Object, mockDelayStrategy.Object, mockExceptionDispatcher.Object, log, null, queueConfig); CloudQueueMessage cloudMessage = new CloudQueueMessage("TestMessage"); _storageMessage = new StorageQueueMessage(cloudMessage); }
public Task <IListener> CreateAsync(CancellationToken cancellationToken) { QueueTriggerExecutor triggerExecutor = new QueueTriggerExecutor(_executor); IListener listener = new QueueListener(_queue, _poisonQueue, triggerExecutor, _exceptionHandler, _loggerFactory, _messageEnqueuedWatcherSetter, _queueOptions, _queueProcessorFactory, _descriptor); return(Task.FromResult(listener)); }
public Task <IListener> CreateAsync(CancellationToken cancellationToken) { QueueTriggerExecutor triggerExecutor = new QueueTriggerExecutor(_executor); SharedQueueWatcher sharedWatcher = _sharedContextProvider.GetOrCreateInstance <SharedQueueWatcher>( new SharedQueueWatcherFactory(_messageEnqueuedWatcherSetter)); IListener listener = new QueueListener(_queue, _poisonQueue, triggerExecutor, _exceptionHandler, _trace, sharedWatcher, _queueConfiguration); return(Task.FromResult(listener)); }
public Task <IListener> CreateAsync(IFunctionExecutor executor, CancellationToken cancellationToken) { QueueTriggerExecutor triggerExecutor = new QueueTriggerExecutor(_instanceFactory, 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, _log, sharedWatcher, _queueConfiguration.BatchSize, _queueConfiguration.MaxDequeueCount); return(Task.FromResult(listener)); }
public Task <IListener> CreateAsync(CancellationToken cancellationToken) { QueueTriggerExecutor triggerExecutor = new QueueTriggerExecutor(_executor); IDelayStrategy delayStrategy = new RandomizedExponentialBackoffStrategy(QueuePollingIntervals.Minimum, _queueConfiguration.MaxPollingInterval); SharedQueueWatcher sharedWatcher = _sharedContextProvider.GetOrCreateInstance <SharedQueueWatcher>( new SharedQueueWatcherFactory(_messageEnqueuedWatcherSetter)); IListener listener = new QueueListener(_queue, _poisonQueue, triggerExecutor, delayStrategy, _exceptionHandler, _trace, sharedWatcher, _queueConfiguration); return(Task.FromResult(listener)); }
public Task <IListener> CreateAsync(CancellationToken cancellationToken) { ITriggerExecutor <IStorageQueueMessage> triggerExecutor = new HostMessageExecutor(_executor, _functionLookup, _functionInstanceLogger); // Provide an upper bound on the maximum polling interval for run/abort from dashboard. // This ensures that if users have customized this value the Dashboard will remain responsive. TimeSpan maxPollingInterval = QueuePollingIntervals.DefaultMaximum; IListener listener = new QueueListener(_queue, poisonQueue: null, triggerExecutor: triggerExecutor, exceptionHandler: _exceptionHandler, loggerFactory: _loggerFactory, sharedWatcher: null, queueConfiguration: _queueConfiguration, maxPollingInterval: maxPollingInterval); return(Task.FromResult(listener)); }
public Task <IListener> CreateAsync(IFunctionExecutor executor, CancellationToken cancellationToken) { 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, batchSize: _queueConfiguration.BatchSize, maxDequeueCount: _queueConfiguration.MaxDequeueCount); return(Task.FromResult(listener)); }
internal static QueueProcessor CreateQueueProcessor(QueueClient queue, QueueClient poisonQueue, ILoggerFactory loggerFactory, IQueueProcessorFactory queueProcessorFactory, QueuesOptions queuesOptions, IMessageEnqueuedWatcher sharedWatcher) { QueueProcessorOptions context = new QueueProcessorOptions(queue, loggerFactory, queuesOptions, poisonQueue); QueueProcessor queueProcessor = null; if (HostQueueNames.IsHostQueue(queue.Name)) { // We only delegate to the processor factory for application queues, // not our built in control queues queueProcessor = new QueueProcessor(context); } else { queueProcessor = queueProcessorFactory.Create(context); } QueueListener.RegisterSharedWatcherWithQueueProcessor(queueProcessor, sharedWatcher); return(queueProcessor); }
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); }
public Task<IListener> CreateAsync(CancellationToken cancellationToken) { QueueTriggerExecutor triggerExecutor = new QueueTriggerExecutor(_executor); IDelayStrategy delayStrategy = new RandomizedExponentialBackoffStrategy(QueuePollingIntervals.Minimum, _queueConfiguration.MaxPollingInterval); SharedQueueWatcher sharedWatcher = _sharedContextProvider.GetOrCreateInstance<SharedQueueWatcher>( new SharedQueueWatcherFactory(_messageEnqueuedWatcherSetter)); IListener listener = new QueueListener(_queue, _poisonQueue, triggerExecutor, delayStrategy, _backgroundExceptionDispatcher, _trace, sharedWatcher, _queueConfiguration); return Task.FromResult(listener); }