public virtual async Task CanRunQueueJobWithLockFail() { const int workItemCount = 10; const int allowedLockCount = 5; using (var queue = GetSampleWorkItemQueue(retries: 3, retryDelay: TimeSpan.Zero)) { await queue.DeleteQueueAsync(); var enqueueTask = Run.InParallel(workItemCount, async index => { await queue.EnqueueAsync(new SampleQueueWorkItem { Created = SystemClock.UtcNow, Path = "somepath" + index }); }); var lockProvider = new ThrottlingLockProvider(new InMemoryCacheClient(), allowedLockCount, TimeSpan.FromDays(1), Log); var job = new SampleQueueJobWithLocking(queue, null, lockProvider, Log); await SystemClock.SleepAsync(10); await Task.WhenAll(job.RunUntilEmptyAsync(), enqueueTask); var stats = await queue.GetQueueStatsAsync(); Assert.Equal(0, stats.Queued); Assert.Equal(workItemCount, stats.Enqueued); Assert.Equal(allowedLockCount, stats.Completed); Assert.Equal(allowedLockCount * 4, stats.Abandoned); Assert.Equal(allowedLockCount, stats.Deadletter); } }
public ThrottledJob(ICacheClient client, ILoggerFactory loggerFactory = null) : base(loggerFactory) { _locker = new ThrottlingLockProvider(client, 1, TimeSpan.FromMilliseconds(100), loggerFactory); }
public ElasticSearchConfiguration(ICacheClient cacheClient, IQueue<WorkItemData> workItemQueue) { _lockProvider = new ThrottlingLockProvider(cacheClient, 1, TimeSpan.FromMinutes(1)); _workItemQueue = workItemQueue; }
public ThrottledJob(ICacheClient client) { _locker = new ThrottlingLockProvider(client, 1, TimeSpan.FromMilliseconds(100)); }