Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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);
        }
Пример #5
0
 protected virtual Task OnEnqueuing(object sender, EnqueuingEventArgs <T> enqueuingEventArgs)
 {
     return(TaskHelper.Completed());
 }