コード例 #1
0
ファイル: JobService.cs プロジェクト: zpavic/MassTransit
        async Task <JobHandle <T> > IJobService.CreateJob <T>(ConsumeContext context, Guid jobId, T command, IJobFactory <T> jobFactory)
        {
            if (_stopping)
            {
                throw new InvalidOperationException("The job service is stopping.");
            }

            var jobContext = new ConsumerJobContext <T>(context, jobId, command);

            var babyTask = Run(jobContext, jobFactory);

            var jobHandle = new ConsumerJobHandle <T>(jobContext, babyTask);

            _registry.Add(jobHandle);

            await ScheduleSupervision(jobContext, jobContext.Command, jobHandle).ConfigureAwait(false);

            return(jobHandle);
        }
コード例 #2
0
        async Task <JobHandle <T> > ITurnoutController.CreateJob <T>(ConsumeContext <T> context, IJobFactory <T> jobFactory)
        {
            var jobContext = new ConsumerJobContext <T>(context);

            var babyTask = Run(jobContext, jobFactory);

            var jobHandle = new ConsumerJobHandle <T>(jobContext, babyTask);

            _roster.Add(jobContext.JobId, jobHandle);

            var utcNow        = DateTime.UtcNow;
            var scheduledTime = utcNow + _superviseInterval;

            var check = new Supervise(jobContext.JobId, utcNow, jobHandle.Status);

            await context.ScheduleMessage(_controlAddress, scheduledTime, check).ConfigureAwait(false);

            return(jobHandle);
        }