Ejemplo n.º 1
0
        public async Task <Job> TakeFor(TakeNextOptions options)
        {
            var jobQuery = new JobQuery
            {
                QueueId             = options.QueueId,
                HasAttributes       = options.HasAttributes,
                HasResult           = false,
                HasBeenAcknowledged = false
            };

            var update = Builders <Job> .Update.Set(x => x.Acknowledgment, options.Acknowledgment);

            var findOneAndUpdateOptions = new FindOneAndUpdateOptions <Job>
            {
                ReturnDocument = ReturnDocument.After
            };

            var result = await _jobs.FindOneAndUpdateAsync(jobQuery.BuildFilters(), update, findOneAndUpdateOptions).ConfigureAwait(false);

            return(result);
        }