示例#1
0
        public async Task <string> ExclusiveCreateAsync(string name, IContextParameters @params)
        {
            var userId = _userResolver.GetUserId();

            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentNullException(nameof(userId));
            }

            if (await _lockService.LockAsync(name) == false)
            {
                await _lockService.UnlockAsync(name);

                //return null;
            }

            var job = await _jobRepository.AddAsync(new Job(name, userId, @params));

            _jobRegistory.AddJob(job);
            _jobRegistory.Enqueue(job.Id);

            return(job.Id);
        }
示例#2
0
        public async Task <long?> ExclusiveCreateAsync <TParams>(string name, TParams @params)
        {
            var userId = _userResolver.GetUserId();

            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentNullException(nameof(userId));
            }

            if (await _lockService.LockAsync(name) == false)
            {
                return(null);
            }

            var job = new Job(name, userId, @params);

            job.Id = await _jobRepository.AddAsync(job);

            _jobRegistory.AddJob(job.Id, job);
            _jobRegistory.Enqueue(job.Id);

            return(job.Id);
        }