protected virtual async Task <bool> OnEnqueuingAsync(T data) { var args = new EnqueuingEventArgs <T> { Queue = this, Data = data }; await(Enqueuing?.InvokeAsync(this, args) ?? Task.CompletedTask).AnyContext(); return(!args.Cancel); }
protected virtual async Task <bool> OnEnqueuingAsync(T data, QueueEntryOptions options) { var enqueueing = Enqueuing; if (enqueueing == null) { return(false); } var args = new EnqueuingEventArgs <T> { Queue = this, Data = data, Options = options }; await enqueueing.InvokeAsync(this, args).AnyContext(); return(!args.Cancel); }
protected override async Task OnEnqueuing(object sender, EnqueuingEventArgs <T> enqueuingEventArgs) { string uniqueIdentifier = GetUniqueIdentifier(enqueuingEventArgs.Data); if (String.IsNullOrEmpty(uniqueIdentifier)) { return; } bool success = await _cacheClient.AddAsync(uniqueIdentifier, true, _detectionWindow); if (!success) { var logger = _loggerFactory.CreateLogger <T>(); logger.LogInformation("Discarding queue entry due to duplicate {UniqueIdentifier}", uniqueIdentifier); enqueuingEventArgs.Cancel = true; } }
protected virtual async Task <bool> OnEnqueuingAsync(T data, QueueEntryOptions options) { if (String.IsNullOrEmpty(options.CorrelationId)) { options.CorrelationId = Activity.Current?.Id; } var enqueueing = Enqueuing; if (enqueueing == null) { return(false); } var args = new EnqueuingEventArgs <T> { Queue = this, Data = data, Options = options }; await enqueueing.InvokeAsync(this, args).AnyContext(); return(!args.Cancel); }
protected virtual Task OnEnqueuing(object sender, EnqueuingEventArgs <T> enqueuingEventArgs) { return(TaskHelper.Completed()); }