public async Task <IJobId> ScheduleNowAsync(IJob job, CancellationToken cancellationToken)
        {
            if (job == null)
            {
                throw new ArgumentNullException(nameof(job));
            }

            var jobDefinition = _jobDefinitionService.GetDefinition(job.GetType());

            try
            {
                var json = _jsonSerializer.Serialize(job);

                if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Trace))
                {
                    _logger.LogTrace($"Executing job '{jobDefinition.Name}' v{jobDefinition.Version}: {json}");
                }

                await _jobRunner.ExecuteAsync(jobDefinition.Name, jobDefinition.Version, json, cancellationToken).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                // We want the InstantJobScheduler to behave as an out-of-process scheduler, i.e., doesn't
                // throw exceptions directly related to the job execution
                _logger.LogError(e, $"Execution of job '{jobDefinition.Name}' v{jobDefinition.Version} failed!");
            }

            return(JobId.New);
        }
Esempio n. 2
0
        public async Task <IJobId> ScheduleNowAsync(IJob job, CancellationToken cancellationToken)
        {
            var jobDefinition = _jobDefinitionService.GetJobDefinition(job.GetType());
            var json          = _jsonSerializer.Serialize(job);

            _log.Verbose(() => $"Executing job '{jobDefinition.Name}' v{jobDefinition.Version}: {json}");

            // Don't schedule, just execute...
            await _jobRunner.ExecuteAsync(jobDefinition.Name, jobDefinition.Version, json, cancellationToken).ConfigureAwait(false);

            return(JobId.New);
        }
Esempio n. 3
0
        public async Task <IJobId> ScheduleNowAsync(IJob job, CancellationToken cancellationToken)
        {
            if (job == null)
            {
                throw new ArgumentNullException(nameof(job));
            }

            var jobDefinition = _jobDefinitionService.GetDefinition(job.GetType());

            try
            {
                var json = _jsonSerializer.Serialize(job);

                _logger.LogDebug(
                    "Executing job {JobName} v{JobVersion}: {Json}",
                    jobDefinition.Name,
                    jobDefinition.Version,
                    json);

                await _jobRunner.ExecuteAsync(jobDefinition.Name, jobDefinition.Version, json, cancellationToken).ConfigureAwait(false);
            }
            catch (Exception e)
            {
                // We want the InstantJobScheduler to behave as an out-of-process scheduler, i.e., doesn't
                // throw exceptions directly related to the job execution

                _logger.LogError(
                    e,
                    "Execution of job {JobName} v{JobVersion} failed due to {ExceptionType}: {ExceptionMessage}",
                    jobDefinition.Name,
                    jobDefinition.Version,
                    e.GetType().PrettyPrint(),
                    e.Message);
            }

            return(JobId.New);
        }
Esempio n. 4
0
 public Task ExecuteAsync(string displayName, string jobName, int version, string job)
 {
     return(_jobRunner.ExecuteAsync(jobName, version, job, CancellationToken.None));
 }