Example #1
0
        /// <summary>
        /// 重试处理
        ///     应该由Retryer线程调用
        /// </summary>
        /// <param name="arn">重试节点</param>
        /// <returns></returns>
        public bool RetryProcess(RetryNode arn)
        {
            ISrcUrl  isu = arn.SrcUrl;
            AqiParam ap  = arn.Param;

            byte[] data = null;
            try
            {
                if (isu is ISrcUrlParam)
                {
                    ISrcUrlParam isup = isu as ISrcUrlParam;
                    data = isup.GetData(ap);
                }
                else
                {
                    data = isu.GetData();
                }
            }
            catch (Exception ex)
            {
                AqiManage.Remind.Log_Error("数据重试失败,再入重试队列", new string[] { this.name, arn.Name, isu.Name });
                this.ar.PutAgain(arn, ex);
                return(false);
            }
            this.SaveProcess(data, isu, ap);
            arn.Reset();
            return(true);
        }
Example #2
0
        /// <summary>
        /// 读取参数列表
        ///     从 SrcUrl 接口
        /// </summary>
        /// <param name="iParseSrcUrlParam">实现IParseSrcUrlParam的SrcUrl</param>
        /// <param name="relySrcUrl">参数来源SrcUrl</param>
        /// <returns></returns>
        public static List <AqiParam> CreateListFormSrcUrl(IParseSrcUrlParam iParseSrcUrlParam, ISrcUrl relySrcUrl)
        {
            List <AqiParam> listParam = new List <AqiParam>();

            //TODO 应该将 runner的处理过程公开,交由Runner处理,公用代码,考虑将Process处理函数静态化
            try
            {
                if (relySrcUrl is ISrcUrlParam)
                {
                    ISrcUrlParam    isup = relySrcUrl as ISrcUrlParam;
                    List <AqiParam> list = null;

                    if (isup is ICacheParam)
                    {
                        ICacheParam icp = isup as ICacheParam;
                        if (icp.IsParamsExpired())
                        {
                            icp.LoadParams();
                        }
                        list = icp.FilterParams();
                    }
                    else
                    {
                        list = isup.EnumParams();
                    }

                    if ((list == null) || (list.Count == 0))
                    {
                        throw new ParamException("缺少参数");
                    }

                    foreach (AqiParam ap in list)
                    {
                        byte[]          data = data = isup.GetData(ap);
                        List <AqiParam> aps  = iParseSrcUrlParam.ParseParam(data);
                        listParam.AddRange(aps);
                    }
                }
                else
                {
                    byte[]          data = relySrcUrl.GetData();
                    List <AqiParam> aps  = iParseSrcUrlParam.ParseParam(data);
                    listParam.AddRange(aps);
                }
            }
            catch (System.Exception ex)
            {
                throw new ParamException("参数创建错误", ex);
            }

            return(listParam);
        }
Example #3
0
 /// <summary>
 /// 获取处理
 /// </summary>
 /// <param name="isu">数据接口</param>
 /// <param name="sugt">定时器</param>
 public void GetProcess(ISrcUrl isu, SrcUrlGroupTimer sugt)
 {
     byte[] data = null;
     try
     {
         data = isu.GetData();
     }
     catch (Exception exception)
     {
         AqiManage.Remind.Log_Error("数据获取失败,进入重试队列", new string[] { this.name, sugt.Name, isu.Name });
         this.ar.PutNew(this.name, isu, null, exception);
         return;
     }
     this.SaveProcess(data, isu, null);
 }
Example #4
0
 /// <summary>
 /// 获取处理
 /// </summary>
 /// <param name="isu">数据接口</param>
 /// <param name="sugt">定时器</param>
 public void GetProcess(ISrcUrl isu, SrcUrlGroupTimer sugt)
 {
     byte[] data = null;
     try
     {
         data = isu.GetData();
     }
     catch (Exception exception)
     {
         AqiManage.Remind.Log_Error("数据获取失败,进入重试队列", new string[] { this.name, sugt.Name, isu.Name });
         this.ar.PutNew(this.name, isu, null, exception);
         return;
     }
     this.SaveProcess(data, isu, null);
 }