Esempio n. 1
0
        private void ValidateAddOrUpdateJobCommand(AddOrUpdateJobCommand command)
        {
            if (string.IsNullOrWhiteSpace(command.CallAddress))
            {
                throw new InvalidOperationException("callAddress is required");
            }

            if (string.IsNullOrWhiteSpace(command.JobName))
            {
                throw new InvalidOperationException("jobName is required");
            }

            try
            {
                JObject.Parse(command.ParamJson);
            }
            catch
            {
                throw new InvalidOperationException("paramJson is not valid  object json string");
            }

            switch (command.JobType)
            {
            case JobType.None:
                throw new InvalidOperationException("invalid jobType");

            case JobType.RecurringJob:

                if (string.IsNullOrWhiteSpace(command.Cron))
                {
                    throw new InvalidOperationException("cron is required for recurringJob");
                }
                break;

            case JobType.FireAndForgetJob:
                break;

            case JobType.DelayedJob:
                if (command.DelayMinutes <= 0)
                {
                    throw new InvalidOperationException("delayMinutes is required for delayedJob");
                }
                break;

            case JobType.ContinuationsJob:
                if (string.IsNullOrWhiteSpace(command.ParentJobId))
                {
                    throw new InvalidOperationException("parentJobId is required for continuationsJob");
                }
                break;

            default:
                throw new InvalidOperationException("invalid jobType");
            }
        }
Esempio n. 2
0
        public async Task SubmitJobAsync(Job job)
        {
            var httpClient = _httpClientFactory.CreateClient();
            var url        = "http://localhost:10000/api/job/addOrUpdate";

            var command = new AddOrUpdateJobCommand
            {
                CallAddress = job.CallAddress,
                Cron        = job.Cron,
                Group       = job.Group,
                JobId       = string.Empty,
                JobName     = job.Name,
                JobType     = JobType.RecurringJob,
                ParamJson   = job.ParamJson,
                Remarks     = job.Remarks
            };
            var json          = System.Text.Json.JsonSerializer.Serialize(command);
            var stringContent = new StringContent(json, Encoding.UTF8, "application/json");
            var result        = await httpClient.PostAsync(url, stringContent);
        }
Esempio n. 3
0
        public async Task <IActionResult> AddOrUpdateAsync([FromBody] AddOrUpdateJobCommand command)
        {
            if (string.IsNullOrWhiteSpace(command.ParamJson))
            {
                command.ParamJson = JsonConvert.SerializeObject(new { });
            }

            ValidateAddOrUpdateJobCommand(command);

            string jobId = string.Empty;

            switch (command.JobType)
            {
            case JobType.RecurringJob:
                jobId = await _cronJobService.AddOrUpdateRecurringJobAsync(command.JobId, command.JobName, command.CallAddress, command.ParamJson, command.Cron, command.Group, command.Remarks, string.Empty);

                break;

            case JobType.FireAndForgetJob:
                jobId = await _cronJobService.AddFireAndForgetJobAsync(command.JobName, command.CallAddress, command.ParamJson, command.Group, command.Remarks);

                break;

            case JobType.DelayedJob:
                jobId = await _cronJobService.AddDelayedJobAsync(command.JobName, command.CallAddress, command.ParamJson, command.DelayMinutes, command.Group, command.Remarks);

                break;

            case JobType.ContinuationsJob:
                jobId = await _cronJobService.AddContinuationsJobAsync(command.ParentJobId, command.JobName, command.CallAddress, command.ParamJson, command.Group, command.Remarks);

                break;

            default:
                break;
            }

            return(Ok(new { jobId }));
        }