Example #1
0
        public async Task <Job> RequestNewJobAsync(TInput input, CancellationToken cancel)
        {
            var identifier = CreateJobIdentifier(Guid.NewGuid().ToString("N"));
            var header     = new JobHeader(identifier)
            {
                State   = JobState.Created,
                Created = DateTimeOffset.UtcNow
            };
            var job = new Job(header)
            {
                Input = _inputSerializer.Serialize(input)
            };
            await _repository.CreateAsync(job, cancel);

            using var publisher = _queue.GetPublisher(CreatePublisherConfiguration());
            await publisher.EnqueueAsync(job, cancel);

            return(job);
        }