public override Task CompleteAsync(IQueueItem <TData> item) { EnsureArg.IsNotNull(item, nameof(item)); EnsureArg.IsNotNullOrEmpty(item.Id, nameof(item.Id)); if (item.IsAbandoned || item.IsCompleted) { throw new InvalidOperationException($"queue item has already been completed or abandoned (id={item.Id})"); } #pragma warning disable IDE0067 // Dispose objects before losing scope #pragma warning disable CA2000 // Dispose objects before losing scope if (!this.dequeued.TryRemove(item.Id, out var dequeuedItem) || dequeuedItem == null) #pragma warning restore CA2000 // Dispose objects before losing scope #pragma warning restore IDE0067 // Dispose objects before losing scope { throw new Exception($"unable to remove item from the dequeued list, not found (id={item.Id})"); } Interlocked.Increment(ref this.completedCount); item.MarkCompleted(); this.Logger.LogJournal(LogKeys.Queueing, $"queue item completed: {typeof(TData).PrettyName()} (id={item.Id}, queue={this.Options.QueueName})", LogPropertyKeys.TrackDequeue); this.LastDequeuedDate = DateTime.UtcNow; return(Task.CompletedTask); }
public override async Task CompleteAsync(IQueueItem <TData> item) { EnsureArg.IsNotNull(item, nameof(item)); EnsureArg.IsNotNullOrEmpty(item.Id, nameof(item.Id)); this.logger.LogDebug($"queue item complete (id={item.Id}, queue={this.options.Name})"); if (item.IsAbandoned || item.IsCompleted) { throw new InvalidOperationException($"queue item has already been completed or abandoned (id={item.Id})"); } var message = this.ToMessage(item); await this.queue.DeleteMessageAsync(message).AnyContext(); Interlocked.Increment(ref this.completedCount); item.MarkCompleted(); this.logger.LogJournal(LogKeys.Queueing, $"item completed (id={item.Id}, queue={this.options.Name}, type={typeof(TData).PrettyName()})", LogEventPropertyKeys.TrackDequeue); this.LastDequeuedDate = DateTime.UtcNow; }
public override Task CompleteAsync(IQueueItem <TData> item) { EnsureArg.IsNotNull(item, nameof(item)); EnsureArg.IsNotNullOrEmpty(item.Id, nameof(item.Id)); this.logger.LogDebug($"queue item complete (id={item.Id}, queue={this.options.Name})"); if (item.IsAbandoned || item.IsCompleted) { throw new InvalidOperationException($"queue item has already been completed or abandoned (id={item.Id})"); } if (!this.dequeued.TryRemove(item.Id, out var dequeuedItem) || dequeuedItem == null) { throw new Exception($"unable to remove item from the dequeued list, not found (id={item.Id})"); } Interlocked.Increment(ref this.completedCount); item.MarkCompleted(); this.logger.LogJournal(LogEventPropertyKeys.TrackDequeue, $"{{LogKey:l}} item completed (id={item.Id}, queue={this.options.Name}, type={typeof(TData).PrettyName()})", args: new[] { LogEventKeys.Queueing }); this.LastDequeuedDate = DateTime.UtcNow; return(Task.CompletedTask); }
public override Task CompleteAsync(IQueueItem <TData> item) { EnsureArg.IsNotNull(item, nameof(item)); EnsureArg.IsNotNullOrEmpty(item.Id, nameof(item.Id)); if (item.IsAbandoned || item.IsCompleted) { throw new InvalidOperationException($"queue item has already been completed or abandoned (id={item.Id})"); } var tag = item.Properties.GetValueOrDefault <ulong>("DeliveryTag"); if (tag > 0) { this.channel.BasicAck(tag, false); Interlocked.Increment(ref this.completedCount); item.MarkCompleted(); this.Logger.LogJournal(LogKeys.Queueing, $"queue item completed: {typeof(TData).PrettyName()} (id={item.Id}, queue={this.Options.QueueName})", LogPropertyKeys.TrackDequeue); this.LastDequeuedDate = DateTime.UtcNow; } return(Task.CompletedTask); }