示例#1
0
        // POST: api/Job
        public IHttpActionResult Post(JobDetail jobDetail)
        {
            jobDetail.RequestDateTime = DateTime.Now;

            jobDetail = jobQueueService.CreateJob(jobDetail, Url.Link("DefaultApi", new { controller = "Process", action = "DoSomething" }),
                Url.Link("DefaultApi", new { controller = "Job", action = "UpdateJobResultStatus" }), Url.Link("DefaultApi", new { controller = "job", action = "UpdateJobProcessStatus" }));

            if (jobDetail.ProcessResult.HasError())
            {
                 return BadRequest(string.Join(";", jobDetail.ProcessResult.Errors));
            }

            return Ok<JobDetail>(jobDetail);
        }
        public IHttpActionResult ProcessTask()
        {
            var jobDetail = new JobDetail()
            {
                RequestDateTime = DateTime.Now,
                ResultStatus = ResultStatus.Requested,
                ProcessStatus = ProcessStatus.Processing
            };

            jobDetail = jobQueueService.CreateJob(jobDetail, Url.Link("DefaultApi", new { controller = "Process", action = "DoSomething" }),
                Url.Link("DefaultApi", new { controller = "Job", action = "UpdateJobResultStatus" }), Url.Link("DefaultApi", new { controller = "job", action = "UpdateJobProcessStatus" }));

            if (jobDetail.ProcessResult.HasError())
            {
                return BadRequest(string.Join(";", jobDetail.ProcessResult.Errors));
            }

            return Ok(new {jobId = jobDetail.Id, message = "Process Task Created."});
        }
示例#3
0
        public JobDetail CreateJob(JobDetail detail, string doJobUrl, string updateStatusUrl, string completeJobUrl)
        {
            var job = new Job()
            {
                Id = Guid.NewGuid(),
                RequestDateTime = detail.RequestDateTime,
                CompletedDateTime = detail.CompletedDateTime
            };

            job = MyDbContext.Jobs.Add(job);
            MyDbContext.SaveChanges();

            try
            {
                var messageSender = new MessageSender("testqueue");
                var callBackMessage = new CallBackMessage()
                {
                    Url = doJobUrl,
                    PlayLoad = "abcd",
                    JobId = job.Id.ToString(),
                    UpdateJobStatusUrl = updateStatusUrl,
                    CompleteJobUrl = completeJobUrl
                };
                messageSender.SendMessage(callBackMessage, job.Id.ToString());

                detail.Id = job.Id;
                detail.ProcessResult.Messages.Add("Job Created.");

                return detail;
            }
            catch (Exception e)
            {
                detail.ProcessResult.Errors.Add("Fail to crete job: " + e.Message +"\n" + e.StackTrace);
                job.ProcessStatus = ProcessStatus.FailToPublish;
                MyDbContext.SaveChanges();
                return detail;
            }
        }