Esempio n. 1
0
        /// <summary> 执行任务 </summary>
        /// <param name="data"></param>
        /// <param name="record"></param>
        /// <returns></returns>
        protected override async Task ExecuteJob(HttpDetailDto data, JobRecordDto record)
        {
            var req = new HttpRequest(data.Url)
            {
                BodyType = (HttpBodyType)data.BodyType,

                Headers = new Dictionary <string, string>
                {
                    { "Request-By", "spear" }
                }
            };

            if (!string.IsNullOrWhiteSpace(data.Data))
            {
                req.Data = JsonConvert.DeserializeObject(data.Data);
            }
            if (data.Header != null && data.Header.Any())
            {
                foreach (var header in data.Header)
                {
                    try
                    {
                        if (req.Headers.ContainsKey(header.Key))
                        {
                            continue;
                        }
                        req.Headers.Add(header.Key, header.Value);
                    }
                    catch (Exception ex)
                    {
                        Logger.LogWarning(ex.Message);
                    }
                }
            }
            var resp = await HttpHelper.Instance.RequestAsync(GetHttpMethod(data.Method), req);

            var html = await resp.ReadAsStringAsync();

            record.ResultCode = (int)resp.StatusCode;
            record.Result     = html;
        }
Esempio n. 2
0
        public async Task Execute(IJobExecutionContext context)
        {
            var record = new JobRecordDto
            {
                Id        = IdentityHelper.Guid32,
                StartTime = Clock.Now,
                TriggerId = context.Trigger.Key.Name
            };

            try
            {
                var data = context.JobDetail.JobDataMap.Get(Constants.JobData).CastTo <T>();
                if (data == null)
                {
                    throw new BusiException("任务数据异常");
                }
                record.JobId = data.Id;
                await ExecuteJob(data, record);

                record.Status = RecordStatus.Success;
            }
            catch (Exception ex)
            {
                record.Remark = ex.Message;
                if (!(ex is BusiException))
                {
                    Logger.LogError(ex, ex.Message);
                }
                record.Status = RecordStatus.Fail;
            }
            finally
            {
                record.CompleteTime = Clock.Now;
                var repository = CurrentIocManager.Resolve <IJobContract>();
                var result     = await repository.AddRecordAsync(record);
            }
        }
Esempio n. 3
0
        public async Task <int> AddRecordAsync(JobRecordDto dto)
        {
            var model = dto.MapTo <TJobRecord>();

            return(await _recordRepository.InsertAsync(model));
        }
Esempio n. 4
0
 protected abstract Task ExecuteJob(T data, JobRecordDto record);