// 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."}); }
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; } }